启动另一个应用程序,返回上一个应用程

时间:2014-01-14 15:21:18

标签: android memory

我有一个应用程序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结束了。)

由于

2 个答案:

答案 0 :(得分:0)

只需使用startActivityForResult代替startActivity。 确保您没有丢失调用活动的状态,您需要通过覆盖onSaveInstanceState并将数据添加到Bundle来保存所有相关数据。同时覆盖onRestoreInstanceState以处理您的活动何时返回并需要恢复以前的数据。

答案 1 :(得分:0)

返回呼叫活动

Android: Go back to previous activity

startActivityForResultstartActivity都可用于调用其他活动。请注意,startActivityForResult依赖于被调用的活动在完成之前调用setResult

以正确状态返回活动

要确定",当你打电话给B时,你可以回到处于状态的应用程序A,你可能必须保持其活动状态,这样当应用程序B返回时,你可以" ;重新创建"它处于正确的状态。

快速链接:

Saving Android Activity state using Save Instance State

http://developer.android.com/training/basics/activity-lifecycle/recreating.html