本主题继续这样的: Android. How to start activity without creating new one?如何重用活动?不创建活动,每次
我已阅读,活动被破坏时,单击后退按钮。 当它们移动到堆栈然后再调用活动时,它们不会被销毁。使用android:launchMode="singleTask"
例如
当我单击按钮BACK并再次运行活动时,是否有可能不会销毁活动?
本主题继续这样的: Android. How to start activity without creating new one?如何重用活动?不创建活动,每次
我已阅读,活动被破坏时,单击后退按钮。 当它们移动到堆栈然后再调用活动时,它们不会被销毁。使用android:launchMode="singleTask"
例如
当我单击按钮BACK并再次运行活动时,是否有可能不会销毁活动?
你可以重新定义你的活动的“onBack”的方法,像
public void onBackPressed()
{
moveTaskToBack (true);
}
返回按钮的默认实现的东西是完成当前活动。然而,你可能会拦截那个按键并按照你的意愿做任何事情。例如,您可以“完成”以前的活动,而不是完成当前的活动,从而使其看起来好像正常实施即将到来。
拦截后退按钮按下:Android: intercepting back key
,并不会产生一个新的每次开始以前的活动:
Intent i = new Intent(View.getContext(), PreviousActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);
好运。
+1 Thanks.It working fine –
我发现这个答案很有用,但是对毫无戒心的开发人员提出了警告:当你需要一个Context时,**请不要使用Application Context **,除非你知道你在做什么。在这种情况下,您只需传递'this'(当前的Activity实例)而不是Application Context。 –
谢谢你们......你节省了我的时间...... !!! –
您可以在关闭时,你压回button.You也可以用下面的方法禁用后退按钮
public void onBackPressed()
{
//super.onBackPressed();
}
,你也可以开始新的活动停止活动如果后退按钮用户点击喜欢
public void onBackPressed()
{
startActivity(new Intent(context, newActivity.class));
}
其实你应该完成活动,如果用户按下返回按钮 .else可以有更多的活动将驻留在回栈,所以可能会有内存问题,所以在这种情况下,Android会摧毁你的活动这些领带已停止并且不会在很长时间内恢复。
请注意:新的'onBackPressed()'方法需要API 5或更高版本。对旧设备使用onKeyDown。 –
'onBackPressed()'需要API7及更高版本,所以如果我们要实现低于API5,我们必须使用onKeyDown – Dharmendra
我错过了什么?我仍然认为它是[API5](http://developer.android.com/reference/android/app/Activity.html#onBackPressed())。:) –
我不会建议,因为用户可以选择按主页按钮来做到这一点(如果它需要内存,Android会杀死你的应用程序)。由于这样的决定,用户开始使用混乱的任务杀手(在我看来)。然后,开发人员正在努力使他们的应用程序工作,因为用户正在通过任务杀手来杀死他的应用程序......不要惹恼android生命周期;-) – Knickedi
为什么你甚至想要这样做? I.不能想到单一的好处。 – frostymarvelous
一个好处是,如果活动布局复杂并且需要10秒钟才能被加载,然后可以节省10秒,重新使用该活动而不需要从头开始创建它。 – Ehsan