我有一个应用程序A,其活动启动另一个应用程序B,如下所示:
@Override
protected void onResume() {
super.onResume();
if (launched == false) {
Intent intent = getPackageManager().getLaunchIntentForPackage(apk);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
launched = true;
} else {
// Here I launch another activity of application A
launched = false;
}
}
这个其他应用程序B有一个关闭按钮来完成其主要活动。
逻辑行为是返回onResume()
的“else”中的第一个应用程序A.
有时,从应用程序A的“启动”活动调用onDestroy()
方法,并在应用程序B停止时显示Android桌面。
我的第一个想法是关于Android内存管理。如果应用程序B占用大量内存或此时Android GC自动启动,则应用程序A可能被终止(应用程序A占用大量内存,但这是另一个问题)。
在清单中,我放了android:persistent="true"
但它没有改变任何东西。
您是否知道在应用程序B结束时如何确定返回应用程序A?
编辑:
当应用程序B完成时,我启动应用程序B的应用程序A活动不会转到onResume()
,而是转到onStop()
。我觉得它就像onStart - > onResume(这里我启动应用程序B) - > onPause(应用程序B现在可见) - > onResume(这是onResume中的第二次,所以应用程序B结束了。)
由于
答案 0 :(得分:0)
只需使用startActivityForResult
代替startActivity
。
确保您没有丢失调用活动的状态,您需要通过覆盖onSaveInstanceState
并将数据添加到Bundle来保存所有相关数据。同时覆盖onRestoreInstanceState
以处理您的活动何时返回并需要恢复以前的数据。
答案 1 :(得分:0)
Android: Go back to previous activity
startActivityForResult
和startActivity
都可用于调用其他活动。请注意,startActivityForResult
依赖于被调用的活动在完成之前调用setResult
。
要确定",当你打电话给B时,你可以回到处于状态的应用程序A,你可能必须保持其活动状态,这样当应用程序B返回时,你可以" ;重新创建"它处于正确的状态。
Saving Android Activity state using Save Instance State
http://developer.android.com/training/basics/activity-lifecycle/recreating.html