Zel*_*mir 26
如文档中所述
http://developer.android.com/reference/android/os/Handler.html
"每个Handler实例都与一个线程和该线程的消息队列相关联."
当您即将完成您的活动时,例如在onDestroy()您还需要取消为其启动的runnable的回调:
mHandler.removeCallbacks(previouslyStartedRunnable);
Run Code Online (Sandbox Code Playgroud)
即使没有检查在您的活动处于活动状态时是否已经触发了runnable,您也可以这样做.
更新:
还有两个案例需要考虑:
1.)您已经以为Runnable创建新类的方式实现了Handler,例如
private class HandleUpdateInd implements Runnable...
Run Code Online (Sandbox Code Playgroud)
通常你需要这样做,如果你必须使用当前参数集启动延迟runnable(可能会发生变化,直到可运行的火灾).要取消它,您需要使用
mHandler.removeCallbacksAndMessages(HandleUpdateInd.class);
Run Code Online (Sandbox Code Playgroud)
2.)如果您使用内联电话(JPM感谢评论)
handler = new Handler() { public void handleMessage(Message msg) { ... } };
Run Code Online (Sandbox Code Playgroud)
然后,您需要为该消息定义"what"值.稍后,如果您需要取消它,您可以使用
handler.removeMessages(what);
Run Code Online (Sandbox Code Playgroud)
执行该任务.
您的意思是您的活动中某处有一个线程吗?停止一个线程非常容易,您需要有该线程的引用。喜欢:
private Thread mMyThread;
mMyThread = new Thread .......
Run Code Online (Sandbox Code Playgroud)
当你想停止它时,只需检查引用是否不为空并调用中断方法:
if (mMyThread != null) {
mMyThread.interrupt();
}
Run Code Online (Sandbox Code Playgroud)
希望有帮助
| 归档时间: |
|
| 查看次数: |
29825 次 |
| 最近记录: |