按下后退按钮后,android线程仍在运行

时间:2011-03-23 11:50:10

标签: android multithreading

我想在按下后退按钮时停止一个线程 我正在使用Handler

6 个答案:

答案 0 :(得分:2)

您无法使用stopdestroy方法。 在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)删除回调。 这应该完美的工作。快乐编码:)