0

我为我的应用程序创建了一个活动和一个视图。在视图内部,我有一个充当服务器的线程。

public class MainActivity extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(new MainView(this));
}
}

public class ServerView extends View {

public ServerView(Context context) {
    super(context);
        server.startServer();
}
}

当我按下 backButton 时,我的应用程序没有被破坏。我手动破坏了它,但我的线程仍在后台运行。我需要捕捉 backButton 事件,所以我使用了这个

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
    server.shutDown();
}
return super.onKeyDown(keyCode, event);
}

这个函数不能停止我的线程。我不知道如何从视图中销毁我的 mainActivity?有什么建议吗?

4

5 回答 5

0

在我看来,如果你想销毁 Activity,你可以使用Activity.finish(). 如果你想销毁任何线程,你可以System.exit(0);

于 2013-09-11T09:23:18.277 回答
0

将此代码放在主要活动中并从您的服务器视图访问它

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        server.shutDown();
    }
    return super.onKeyDown(keyCode, event);
    }

在您的服务器视图中访问活动对象并调用此代码

于 2012-04-04T07:55:33.223 回答
0

您最好覆盖Activity.finish()方法并清除那里的所有占用资源(如server.shutDown()您的情况)。

于 2012-04-04T08:01:24.967 回答
0

只需调用finish()它即可按您的意愿工作

于 2012-04-04T09:39:33.583 回答
0

您可以使用 finish() 方法来销毁您的活动。并销毁在后台运行的线程,使用 return 语句,或者,

if(thread != null)
{
    Thread t1 = thread;
    thread = null;
    t1.interrupt();
}
于 2012-04-09T12:09:57.897 回答