我想在按下后退按钮时停止一个线程
我正在使用Handler
。
答案 0 :(得分:2)
您无法使用stop
或destroy
方法。
在onStop
方法中,您必须使用this。
答案 1 :(得分:2)
您需要使用Handler
的{{1}}功能。
示例代码:
removeCallbacks()
答案 2 :(得分:1)
创建线程时存储对线程的引用。在您的活动onPause
中,暂停或终止参考线程。
答案 3 :(得分:0)
您可以通过覆盖活动中的onBackPressed()
功能,按下后退按钮来指定操作。此操作必须具有停止线程的命令。它将如下所示。
@Override
public void onBackPressed() {
super.onBackPressed();
thread.stop();
}
答案 4 :(得分:0)
这是一个演示,可以更方便,更快捷地停止线程。
Button back = (Button)findViewById(R.id.back);
back.setText("Back");
back.setOnClickListener(this);
private Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
super.handleMessage(msg);
if(msg.obj.toString().contentEquals("hello"))
{
// do whatever u what to perform after thread stop....
}
removeDialog(0);
}
};
@Override
public void onClick(View v)
{
if(v==back)
{
showDialog(0);
t=new Thread()
{
public void run()
{
Message toMain = handler.obtainMessage();
toMain.obj = "hello";
handler.sendMessage(toMain);
}
};
t.start();
}
}
@Override
protected Dialog onCreateDialog(int id)
{
switch (id)
{
case 0:
{
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage("Connecting . . . . . .");
dialog.setIndeterminate(true);
dialog.setCancelable(true);
return dialog;
}
}
return null;
}
使用此方法创建或停止线程。我希望这会花费更少的时间。
答案 5 :(得分:0)
如果你正在使用处理程序,你可以通过handler.removeCallbacks(runnable)删除回调。 这应该完美的工作。快乐编码:)