2012-05-30 125 views
1

我有一个主要活动,用户从中开始几个活动startActivityForResult。 这可能是一个外部应用程序,如xing条形码扫描仪或interview活动,如mapview或日历等。避免破坏活动

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

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

编辑:

的问题是有点复杂,我怕我在我的应用程序的整个achitecture犯了不少错误。我会尽量解释我做了什么:

我有一个主要活动(extends TabActivity)和GlobalVars一个final public class GlobalVars 是存储大量的变量或类,由项目如所有活动使用。 :

public static boolean system_initialized = false; 
public static boolean system_Onforeground = true; 
main.class OnCreate方法

,我设置system_initialized到trueOnResume方法我设置Onforeground = true,在设置Onforeground = falseOnDestroy设置initialized = false

如果我启动应用程序system_initialized和Onforeground将是真实的,如果我开始ActivityforResult初始化将保持为真,但Onforeground将被设置为false。

现在我有一个BroatcastReceiver,启动android.intent.action.BOOT_COMPLETED并初始化一个带有服务的Alamrmmanager作为pendingIntent。

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

这很好,如果主Activity正在运行,则可执行文件将被执行并发生某些事情,如果用户启动了ActivityforResult服务意识到主要活动不在onForeground上并在后台执行某些操作。但是,如果主要活动被破坏,服务将重新启动主要活动,我不希望那^^我知道,很奇怪,但我不知道如何以其他方式实现我需要的东西。 ..

回答

1

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

你也可以把支票放在你的应用onLowMemory你得到的回拨。

请按照SO上的链接。
它可能会有帮助。

Handling DVM killing your activity