View的自动刷新和内存泄漏的问题

lv_kevin 2011-06-25 06:59:39
我做的是一个图表程序,要自动刷新一个大概800x2000的Bitmap
现在的问题是如果我用多线程Timer来刷新的话,在屏幕旋转的时候系统销毁Activity不会回收Bitmap
转两下就内存溢出了,我在网上搜了很多相关的方法,都是片段,放进去都不成功。不知道大家是怎么处理的。
代码如下:

主view 的onCreate
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adptr = new Adapter();

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.viewer);

ivData = (ImageView) findViewById(R.id.ivData);
ivFrame = (ImageView) findViewById(R.id.ivFrame);
ivData.setScaleType(ScaleType.MATRIX);
ivFrame.setScaleType(ScaleType.MATRIX);

ivData.setImageBitmap(adptr.mBitmapData);
ivFrame.setImageBitmap(adptr.mBitmapFrame);
ivData.setOnTouchListener(this);
}
其中的Adapter类是用来控制数据的,用timer自动获取数据并且更新mBitmapData和mBitmapFrame
我在网上看到方法都是类似APIDemo里面用重写View的onDraw事件并且加上invalidate()方法
但是APIDemo里面的View都是在新建的View类里面重写onDraw事件,像我这种使用xml布局文件的情况
如何重写某个View的onDraw事件呢?

初学Android和Java,问题太弱智的话大家别见怪
...全文
115 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lv_kevin 2011-06-26
  • 打赏
  • 举报
回复
哇哈哈哈,果然不会泄漏了,原来这么简单,不过旋转的时候不会更新了,我设计的横屏和竖屏的设计不同,所以还需要重写onConfigurationChanged事件
谢谢楼上的
fontlose 2011-06-25
  • 打赏
  • 举报
回复

自动横竖旋转时,activity每次都会重新调用onCreate,在AndroidManifest.xml你的activity里加入红色部分,可以避免。

<activity android:name="....." android:configChanges="orientation|keyboardHidden"></activity>

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧