的AsyncTask替代简单的情况下
问题描述:
当我想要做的背景是什么,如果动作很简单:像做“的东西在后台”,然后更新UI,而不是使用AsyncTask
我正在考虑使用(只需更快的编码):的AsyncTask替代简单的情况下
new Thread(){
public void run(){
final ArrayList<myObjects> objects= myDatabase.queryObjects();
runOnUiThread(new Runnable() {
@Override
public void run() {
updateUIWith(objects);
}
});
}
}
但我真的,如果使用“最终”不知道对象可以导致内存泄漏这样或具有其他种类的烦恼。
就是采用这种方法好不好?
答
final
只说给你不会重新分配objects
变量在你的代码编译器。 final
与内存泄漏之间没有关联。
如果您使用匿名内部类(new Runnable...
),您必须使objects
最终。
我对Android不太熟悉,但是如果您的updateUIWith()
方法确实与UI对象交互,那么可能会出现问题,因为我会假设UI更新需要在特定的UI线程中运行。如果您不更新该方法中的UI对象,那么您的代码应该没问题。
答
的问题是:它打开一个新的线程为每一个小动作一个好主意? AsyncTask提供了由其他人管理的线程的便利性,但是当您像您一样声明线程时,您有责任处理诸如线程数量限制等情况。
代码很好。除非并且直到你确定你没有改变对象引用的状态。 – Phani 2012-04-10 09:40:26