我有以下处理程序:
public static final int WORK = 2;
public static final int UPDATE = 1;`
private Handler uiHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
switch (msg.what)
{
case UPDATE:
// Perform UI updates here
this.sendMessageDelayed(this.obtainMessage(WORK), 15000);
break;
case WORK:
{
new Thread(doWork).start();
}
break;
default:
super.handleMessage(msg);
}
}
};
这非常有效。 但是,我面临的不利方面如下。
假设我在onResume()
内部运行以下uiHandler.sendMessageDelayed(uiHandler.obtainMessage(WORK), 500);
现在处理程序将完美运行,让我们说时间为9:00:10,并将触发运行该线程。
然而,每当我离开活动,然后去另一个活动,然后(快速)回来,处理程序的另一个计时器正在启动。 假设我在9:00:13从其他活动回来了
我将在9:00:15和9:00:28运行两个线程
如果我来回走动,还有更多。
在我的onPause中我正在呼叫uiHandler.removeMessages(WORK);
,但它没有任何帮助。