我们有一个直播的视频流媒体应用。用户按下主页按钮。我希望将应用程序从内存中删除。当再次选择应用程序时,我们有一个全新的负载。有很多流程正在进行,我们不希望手动管理所有连接,流等。这就是我们的iPhone版应用程序的工作方式。
我读过这个:Is quitting an application frowned upon?
我在这里无论如何都不关心机器人的设计模式。但是,如果某人有一种优雅,简单的方式,当按下主页按钮时,我的所有活动都将从堆栈中删除,然后当重新加载应用程序时,它会以新的主要活动开始,这将是很棒的。而且,当在onKeyDown中按下主页键时,我似乎无法调试。它根本就没有注册。 (keyCode == KeyEvent.KEYCODE_HOME)是我的支票。它拾取了后退按钮等。
有什么想法吗?
答案 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);