退出Android应用程序 - 终止所有进程

时间:2011-06-15 17:46:57

标签: android

我们有一个直播的视频流媒体应用。用户按下主页按钮。我希望将应用程序从内存中删除。当再次选择应用程序时,我们有一个全新的负载。有很多流程正在进行,我们不希望手动管理所有连接,流等。这就是我们的iPhone版应用程序的工作方式。

我读过这个:Is quitting an application frowned upon?

我在这里无论如何都不关心机器人的设计模式。但是,如果某人有一种优雅,简单的方式,当按下主页按钮时,我的所有活动都将从堆栈中删除,然后当重新加载应用程序时,它会以新的主要活动开始,这将是很棒的。而且,当在onKeyDown中按下主页键时,我似乎无法调试。它根本就没有注册。 (keyCode == KeyEvent.KEYCODE_HOME)是我的支票。它拾取了后退按钮等。

有什么想法吗?

5 个答案:

答案 0 :(得分:3)

您可以致电system.exit(0);但我仍然建议您遵守Android指南,并在onPause()或类似方法上清理所有内容(应该如此)。

答案 1 :(得分:1)

你能覆盖onPause方法并使用finish()函数吗?

答案 2 :(得分:0)

int p = android.os.Process.myPid();
android.os.Process.killProcess(p);

答案 3 :(得分:0)

你可以点击按钮。定义任何静态方法,如exit()和define

android.os.Process.killProcess(android.os.Process.myPid());在退出方法

在主要或第一项活动中。

然后点击按钮调用此方法。

答案 4 :(得分:0)

如果要清除堆栈中的所有活动,可以从活动中广播启动退出的意图,如下所示:

Intent broadcastIntent = new Intent();
broadcastIntent.setAction("CLEAR_STACK");
sendBroadcast(broadcastIntent);

在你希望从堆栈中清除的每个活动中,你可以创建一个内部类的BroadcastReceiver:

class ActivitiesBroadcastReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    finish();
  }
}

在onCreate()方法中注册您的BroadcastReceiver:

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("CLEAR_STACK");
BroadcastReceiver r;
r = new ActivitiesBroadcastReceiver();
registerReceiver(r, intentFilter);