避免破坏活动

时间:2012-05-30 09:32:27

标签: android android-activity lifecycle

我有一个主要活动,用户可以使用startActivityForResult启动多个活动。 这可能是一个外部应用程序,如xing条形码扫描仪或interview活动,如mapview或日历等。

问题是,通过执行startActivityForResult我的主要活动暂停,可能会被android系统终止。 有时,当用户在启动活动中停留很长时间时会发生这种情况,并且在关闭新活动后,主活动将被销毁,并且不会调用OnActivityResult监听器。

有没有办法告诉系统“不要破坏这个暂停的活动”?

  

编辑:

问题有点复杂,我担心我在我的应用程序的整个架构中犯了很多错误。我将尝试解释我所做的事情:

我有一个主要活动(extends TabActivity)和一个final public class GlobalVars 在GlobalVars中存储了许多变量或类,这些变量或类被项目的所有活动使用,例如。 :

public static boolean system_initialized = false;
public static boolean system_Onforeground = true;

main.class OnCreate方法中,我将system_initialized设置为true 在我设置OnResume的{​​{1}}方法中,Onforeground = true设置为onPause,而Onforeground = false设置为OnDestroy

如果我启动app system_initialized并且Onforeground将为true,如果我开始initialized = false初始化将保持为真,但Onforeground将设置为false。

现在我有一个BroatcastReceiver,它启动ActivityforResult并初始化一个Alamrmmanager,其服务为pendingIntent。

现在我使用该服务检查每一分钟是否必须在主要活动中执行某些操作。如果发生了某个操作,则服务检查system_initialized = true(在GlobalVars中),否则,服务启动应用程序,否则服务使用处理程序(在GlobalVars中)调用主活动中的Runnable。

这很好用,如果主Activity正在运行,runnable将被执行并且会发生一些事情,如果用户启动android.intent.action.BOOT_COMPLETED服务意识到主要活动不在onForeground并在后台执行某些操作。但是如果主要活动被破坏,服务将重新启动主要活动,我不想要^^

我知道,很奇怪,但我不知道如何以其他方式实现我需要的东西......

1 个答案:

答案 0 :(得分:1)

但是当您回到活动时,它将被重新创建。您需要做的就是使用onSaved实例和其他方式保存您的活动状态。

您还可以将支票放入您的应用onLowMemory回调中。

请点击SO上的链接。
它可能会有帮助。

Handling DVM killing your activity