我有一个单独的活动,有几个片段被随机停止,我正在试图找出原因。类似的问题(Why is my android activity being stopped?)但无关的答案。
活动正在Android Wear上运行,并收集加速计数据。它只会在我移动它时与设备交互时停止,例如点击屏幕。我试过了:
swipeToDismiss
。onLowMemory()
以检查是否是资源问题。onFinish()
finish()
醇>
活动是从具有
的服务开始的 Intent startIntent = new Intent( this, WearActivity.class );
startIntent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
startActivity( startIntent );
活动设置为android:launchMode="singleTask"
,但只有一个启动请求。
我已经没想完了。有没有办法确定谁发送停止消息?下面是完整的堆栈跟踪,通过在STOP_ACTIVITY_HIDE
中接收ActivityThread.handleMessage()
系统消息来停止活动:
at myRandomApp.WearActivity.onStop(WearActivity.java:76)
at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1212)
at android.app.Activity.performStop(Activity.java:5387)
at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3196)
at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3245)
at android.app.ActivityThread.access$1100(ActivityThread.java:138)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1236)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5026)
at java.lang.reflect.Method.invokeNative(Method.java:-1)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
at dalvik.system.NativeStart.main(NativeStart.java:-1)
修改
在回复一些注释时,上面的堆栈跟踪不是由抛出的异常生成的。这就是我点击断点的地方,以查看导致应用程序停止的呼叫历史记录。该应用程序退出干净,我正在试图找出它想要退出的原因。
更新 我终于找到了罪魁祸首。在我的应用程序关闭之前,我总是在日志输出中提前几点:
I/ActivityManager﹕ START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.google.android.wearable.app/com.google.android.clockwork.home.HomeActivity (has extras)}
看起来移动手表会增加计步器步数,这会导致新的信息卡显示在手表的主屏幕上。此卡会中断我的全屏活动并将其关闭。有谁知道防止这种情况的方法?感觉就像一个Wear bug,我不确定其他应用程序是否应该能够中断正在运行的前台应用程序。
我找到了我的应用程序关闭的原因,但仅仅是由于发送到日志的幸运信息。我仍在寻找原始问题的答案,以便确定Android系统停止应用的原因的一般方法。也许这是不可能的?
答案 0 :(得分:0)
我对原始问题没有答案,但我对其引起的症状有一个解决方法。我不是将我的应用程序作为全屏活动启动,而是在上下文流中创建一个通知,其中包含一个全屏幕操作。通知是持久的,因此即使其他卡进入流,它们也不会导致我的任务退出。
我在https://code.google.com/p/android/issues/detail?id=75918&thanks=75918&ts=1410235765
提交了此问题的错误最初的问题仍未解决,但我怀疑它没有答案......