我为自己的应用创建了一个Activity和一个View。 在视图中,我有一个充当服务器的线程。
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? 有什么建议吗?
答案 0 :(得分:0)
将此代码放在主要活动中,并从服务器视图
访问它 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
server.shutDown();
}
return super.onKeyDown(keyCode, event);
}
访问服务器视图中的活动对象并调用此代码
答案 1 :(得分:0)
您最好覆盖Activity.finish()
方法并清除所有占用的资源(例如您的server.shutDown()
)。
答案 2 :(得分:0)
只需致电finish()
即可按您的意愿使用
答案 3 :(得分:0)
您可以使用finish()方法来销毁您的活动。并且要销毁在后台使用return语句或
运行的线程if(thread != null)
{
Thread t1 = thread;
thread = null;
t1.interrupt();
}
答案 4 :(得分:0)
在我看来,如果你想破坏活动,你可以使用Activity.finish()
。
如果你想破坏任何线程,你可以System.exit(0);