【发布时间】:2013-08-14 21:59:08
【问题描述】:
在一个单独的线程中完成一项耗时的任务后,我正在使用handler 对象继续 UI 工作。遇到上述 Lint 警告的问题,我的方法如下。
[示例处理程序对象类型 1] ->
Handler responseHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
super.handleMessage(msg);
Toast.makeText(MainActivity.this, "Finished the long running task in seperate thread...", Toast.LENGTH_LONG).show();
}
};
[示例处理程序对象类型 2] ->
Handler responseHandler = new Handler(new Handler.Callback()
{
@Override
public boolean handleMessage(Message msg)
{
Toast.makeText(MainActivity.this, "Finished long running task in a seperate thread...", Toast.LENGTH_LONG).show();
return false; // RETURN VALUE ????
}
});
在单独的线程(除了UI)中,当耗时任务完成时,它执行以下行将控制权返回给UI线程(基本上是处理程序obj)。
responseHandler.sendEmptyMessage(0);
该程序对这两种类型的处理程序对象都工作得很好,但是对于第一种类型,我收到一个 Lint 警告,说 这个处理程序类应该是静态的,否则可能会发生泄漏。
因此我开始使用第二种类型的处理程序对象来避免 Lint 警告,但我遇到的问题是,我不确定返回值 (true/false) 的含义第二种方式,它也适用于任何一种。我在谷歌上搜索了很多,但没有得到解释这个返回值的确切答案。
是的,我看到这个问题在 stackoverflow 的很多地方都问过,主要是重新评估 Lint 警告,但我的问题主要是关于第二种方式的返回类型,并确认它是否可以使用我解决问题的方式第二种类型的处理程序 Obj。
问题 ->
1). 有谁知道这个 return 值的确切含义(真/假)?
2). 消除 lint 警告是正确的做法吗?
谢谢...
【问题讨论】:
-
是的,请查看链接的帖子。
-
我看到了这些链接,我的问题主要是关于我在这些链接中没有找到解释的返回值。
-
stackoverflow.com/questions/17899328/…。检查这个和这个groups.google.com/forum/#!topic/android-developers/1aPZXZG6kWk。查看 romain guy 对主题和解决方案的讨论。
标签: java android android-handler