我正在使用一个handler
对象,在一个单独的线程中完成一个耗时的任务后,继续UI工作。以上Lint警告的问题,以下是我的解决方法。
[ 示例Handler对象类型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线程(基本上是返回到处理程序对象)。
responseHandler.sendEmptyMessage(0);
该程序使用两种类型的handler对象都可以正常工作,但是在使用第一种类型时,会出现一个Lint警告:此Handler类应该为静态的,否则可能会出现泄漏。因此我开始使用第二种类型的handler对象来避免这个Lint警告,但问题是,我不确定第二种方式中返回值(true/false)的含义,并且它能够处理任意一种情况。我在谷歌上搜索了很多,但没有得到确切的答案来解释这个返回值。在stackoverflow的许多地方看到这个问题被问及,主要涉及到Lint警告,但我的问题主要是关于第二种方法中的返回类型,以及确认使用第二种类型的handler对象是否正确解决了问题。
问题如下:
1). 有人知道这个返回值(true/false)的确切含义吗?
2). 我用第二种handler对象来消除Lint警告是正确的吗?
谢谢...