活动在“强制关闭”时重新启动

| 我有一个具有单个根活动的应用程序。我最近引起我注意,对我的“活动”执行任何形式的“强制关闭”都会导致它重新启动,我不知道为什么会发生这种情况。如果我强制未捕获的异常或使用“长按来强制关闭”选项,则两者的结果相同。 我唯一的猜测是某种形式的怪癖,涉及到对活动某些部分的保留引用,只有我在应用程序级别的某些WeakReference条目之外没有任何内容。 相关的logcat条目:
05-25 08:25:49.137: INFO/ActivityManager(18449): Displayed uk.co.randomicon.rstb/.TreeBuilderActivity: +8s82ms
05-25 08:25:54.222: DEBUG/dalvikvm(18546): GC_EXPLICIT freed 12K, 57% free 3640K/8327K, external 8323K/10136K, paused 72ms
05-25 08:25:55.373: WARN/InputManagerService(18449): Got RemoteException sending setActive(false) notification to pid 19122 uid 10069
05-25 08:25:59.217: DEBUG/dalvikvm(18646): GC_EXPLICIT freed 128K, 48% free 2980K/5703K, external 0K/0K, paused 67ms
05-25 08:26:00.238: DEBUG/dalvikvm(18991): GC_CONCURRENT freed 343K, 51% free 2794K/5639K, external 303K/532K, paused 3ms+3ms
05-25 08:26:02.950: INFO/Process(18449): Sending signal. PID: 19554 SIG: 9
05-25 08:26:02.980: INFO/ActivityManager(18449): Process uk.co.randomicon.rstb (pid 19554) has died.
05-25 08:26:02.990: ERROR/InputDispatcher(18449): channel \'40a16ec8 uk.co.randomicon.rstb/uk.co.randomicon.rstb.TreeBuilderActivity (server)\' ~ Consumer closed input channel or an error occurred.  events=0x8
05-25 08:26:02.990: ERROR/InputDispatcher(18449): channel \'40a16ec8 uk.co.randomicon.rstb/uk.co.randomicon.rstb.TreeBuilderActivity (server)\' ~ Channel is unrecoverably broken and will be disposed!
05-25 08:26:02.990: INFO/WindowManager(18449): WINDOW DIED Window{40a16ec8 uk.co.randomicon.rstb/uk.co.randomicon.rstb.TreeBuilderActivity paused=false}
05-25 08:26:03.010: WARN/WindowManager(18449): Failed looking up window
05-25 08:26:03.010: WARN/WindowManager(18449): java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@40c774e0 does not exist
05-25 08:26:03.010: WARN/WindowManager(18449):     at com.android.server.WindowManagerService.windowForClientLocked(WindowManagerService.java:8177)
05-25 08:26:03.010: WARN/WindowManager(18449):     at com.android.server.WindowManagerService.windowForClientLocked(WindowManagerService.java:8168)
05-25 08:26:03.010: WARN/WindowManager(18449):     at com.android.server.WindowManagerService$WindowState$DeathRecipient.binderDied(WindowManagerService.java:7026)
05-25 08:26:03.010: WARN/WindowManager(18449):     at android.os.BinderProxy.sendDeathNotice(Binder.java:385)
05-25 08:26:03.010: WARN/WindowManager(18449):     at dalvik.system.NativeStart.run(Native Method)
05-25 08:26:03.010: INFO/WindowManager(18449): WIN DEATH: null
05-25 08:26:03.020: INFO/ActivityManager(18449): Start proc uk.co.randomicon.rstb for activity uk.co.randomicon.rstb/.TreeBuilderActivity: pid=19565 uid=10069 gids={1015}
任何想法,甚至开始戳将不胜感激! 编辑:这是由我在清单中设置android:stateNotNeeded = \“ true \”引起的。尽管我不需要状态,但这导致Android决定最好以用户希望的方式重新启动我的应用。     
已邀请:
这是一些有用的信息:   就活动重新启动而言-如果进程正在运行   前台活动消失,如果出现以下情况,系统将丢弃该活动   它没有有效的保存状态(通常表示它已暂停)   并已将系统的onSaveInstanceState结果从   暂停)。一旦决定是否放弃该活动,它就会   将继续执行栈顶部的所有活动。如果是这样   您的一项活动-要么是因为另一项活动   崩溃了,或者崩溃了是因为它已经解决了暂停状态   -然后它将再次开始您的流程以显示最重要的活动。     
这可能是由于调用目标设备上不可用的系统API引起的。我遇到了类似的问题,然后尝试在4.0.x设备上调用ActivityManager.MemoryInfo.totalMem。我没有将任何编译错误作为目标4.2.2,并且在API16(4.1)中添加了ActivityManager.MemoryInfo.totalMem     
如果应用的清单文件中包含android:persistent = \“ true \”,则它会在被杀死时重新启动。     

要回复问题请先登录注册