Java android-取消已开始运行的runnable
我在后台有一个漫长的过程要做。因此,Java android-取消已开始运行的runnable,java,android,runnable,android-handlerthread,Java,Android,Runnable,Android Handlerthread,我在后台有一个漫长的过程要做。因此,onCreate,我在处理程序中发布了一个来自handlerThread的runnable,但我有一个按钮,允许用户取消它。启动后是否可以停止运行的Runnable @Override protected void onCreate(Bundle savedInstanceState) { Handler h = new Handler( HandlerThread.getLooper() ); Runnable runnable = //cl
onCreate
,我在处理程序中发布了一个来自handlerThread
的runnable,但我有一个按钮,允许用户取消它。启动后是否可以停止运行的Runnable
@Override
protected void onCreate(Bundle savedInstanceState) {
Handler h = new Handler( HandlerThread.getLooper() );
Runnable runnable = //class that implements runnable;
h.post( runnable );
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
h.removeCallbacks(runnable);
}
}
}
但是这似乎并没有取消已经运行的runnable,或者我应该使用具有巨大延迟的
postDelayed()
?在您的runnable中有一个用于运行的布尔标志
然后,您的按钮可以将此标志设置为true/false,以停止其运行
您可以实现暂停、恢复或启动、停止,这一切都取决于您的用例
i、 例如
while(running) {
// Your repeated background code
}
或
您还可以有多个步骤,允许中途取消
if(running) {
// do step 1 code
}
if(running) {
// do step 2 code
}
在runnable的内部有一个用于运行的布尔标志
然后,您的按钮可以将此标志设置为true/false,以停止其运行
您可以实现暂停、恢复或启动、停止,这一切都取决于您的用例
i、 例如
while(running) {
// Your repeated background code
}
或
您还可以有多个步骤,允许中途取消
if(running) {
// do step 1 code
}
if(running) {
// do step 2 code
}
使用下面的代码
handler.removeCallbacksAndMessages(null);
使用下面的代码
handler.removeCallbacksAndMessages(null);
这会取消所有的跑步,所以可能会取消我想继续跑步的跑步。这会取消所有的跑步,所以可能会取消我想继续跑步的跑步