如何从视野中摧毁活动?或者如何消灭它们?

时间:2012-04-04 07:45:09

标签: android multithreading android-activity android-view ondestroy

我为自己的应用创建了一个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? 有什么建议吗?

5 个答案:

答案 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);