我离开活动时无法移除处理程序,当我回来时它们会继续运行

时间:2014-05-04 19:41:57

标签: android multithreading handler

我有以下处理程序:

  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);,但它没有任何帮助。

0 个答案:

没有答案