【发布时间】:2012-07-01 23:51:10
【问题描述】:
请看下面的代码:
public class MyGridFragment extends Fragment{
Handler myhandler = new Handler() {
@Override
public void handleMessage(Message message) {
switch (message.what) {
case 2:
ArrayList<HashMap<String,String>> theurls = (ArrayList<HashMap<String,String>>) message.obj;
urls.addAll(theurls);
theimageAdapter.notifyDataSetChanged();
dismissBusyDialog();
break;
}
}
}
}
当我像这样使用处理程序时,我收到一个警告“处理程序应该是静态的,否则它很容易出现内存泄漏。”谁能告诉我最好的方法是什么?
【问题讨论】:
-
我不相信你正确使用了hander。看看这个指南:vogella.com/articles/AndroidPerformance/article.html。它没有在示例代码中声明为静态。 ://
-
好吧,即使这样使用它也会给我同样的错误。直到我昨晚升级了我的 android sdk 之前,这种情况从未发生过。现在只需将处理程序声明为类变量就会弹出此 lint 警告
-
那么将你的处理程序声明为静态怎么样?
-
@Zsombor 好吧,我指的是处理程序中的非静态对象
-
查看此blog post 以获得更深入的分析