2014-10-20 124 views
0

我有一个应用程序,它被切换到后台,当用户按后退按钮 -活动不被破坏

@Override 
public void onBackPressed() { 
    Intent setIntent = new Intent(Intent.ACTION_MAIN); 
    setIntent.addCategory(Intent.CATEGORY_HOME); 
    setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(setIntent); 
} 

所以唯一的办法,用户将关闭该应用程序是使用task manager和手动停止。现在

,我试图通过关闭使用task manager我的应用程序在我的Android设备, 然而,在Android Studio的应用程序来测试我的onDestroy似乎还活着,它说Session: '<app_name>' : runningonDestroy不叫。

这是为什么,我该如何解决?

**我想要看到onDestroy在我停止我的应用时使用task manager并手动停止它,因为用户如果要关闭我的应用时必须这样做,而不是按回来按钮。通过按回来按钮应用程序将活着,它的罚款,这是我想要的。

+0

我不相信当您通过任务管理器停止应用程序时,将会调用onDestroy或任何其他函数。我相信它确实会杀死这个过程,并且不会让你的应用程序有机会做任何事情。 – Randy 2014-10-20 18:40:00

回答

0

设置开发人员选项,转到应用部分,并启用“不保留活动”选项。 然后,每次你点击后退按钮,应用程序将被销毁。 我要覆盖的后退按钮动作来破坏应用程序,你可以在你的活动覆盖的onkeydown

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

找不到它 – user2162550 2014-10-20 17:34:38

+0

在设备的开发人员设置http://media02.hongkiat.com/android-developer-options-hidden-features/dont-keep-activities.jpg – JoaoBiriba 2014-10-20 17:35:08

+0

好的,看到它,它的工作原理,但我需要以相同的方式测试应用程序,就像它以正常的方式运行,我的意思是,通过后退按钮,它应该去背景,而不是被销毁,当用户停止应用程序,应该调用'onDestroy'。你的建议是当用户按下后退按钮时销毁应用程序。 – user2162550 2014-10-20 17:42:02

0

致电finish()销毁活动。

@Override 
public void onBackPressed() { 
    Intent setIntent = new Intent(Intent.ACTION_MAIN); 
    setIntent.addCategory(Intent.CATEGORY_HOME); 
    setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(setIntent); 
    finish(); 
} 
+0

什么时候该打电话给我?我需要在用户停止应用程序时执行此操作。 – user2162550 2014-10-20 17:24:13

+0

更新了代码。 :) – Swayam 2014-10-20 17:34:42

+0

谢谢,但我需要它的工作,当用户手动停止应用程序,我会编辑我的问题 – user2162550 2014-10-20 17:36:03

0

您可以拨打finish();,为前,后startActivity(setIntent);

或者,你可以打电话super.onBackPressed();,也最后。

+0

抱歉,这不是我问的问题 – user2162550 2014-10-20 17:52:05

2

为什么要重新启动后面按下的活动?什么都不做。

@Override 
public void onBackPressed() { 
} 
+0

请参阅已编辑的问题 – user2162550 2014-10-20 17:52:39

+0

根据Google的文档,onDestroy()是一个不可靠的钩子。它不会在自动清理应用程序时触发,也可能不会在手动中执行。 – 2014-10-20 20:40:03