Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何找到停止活动的原因_Android_Wear Os - Fatal编程技术网

Android 如何找到停止活动的原因

Android 如何找到停止活动的原因,android,wear-os,Android,Wear Os,我有一个单独的活动,其中有几个片段被随机停止,我试图找出原因。与此()类似的问题,但与答案无关 该活动在Android Wear上运行,并收集加速计数据。只有当我在移动设备时与设备进行交互(如轻敲屏幕)时,它才会停止。我试过: 如果晃动设备导致配置更改,则禁用方向更改 在磨损活动上禁用swipeToDismiss,以防水龙头被误解为快速滑动关闭 使用断点重写onLowMemory(),以检查这是否是资源问题 如果无意调用finish() 该活动从具有的服务启动 Intent startI

我有一个单独的活动,其中有几个片段被随机停止,我试图找出原因。与此()类似的问题,但与答案无关

该活动在Android Wear上运行,并收集加速计数据。只有当我在移动设备时与设备进行交互(如轻敲屏幕)时,它才会停止。我试过:

  • 如果晃动设备导致配置更改,则禁用方向更改
  • 在磨损活动上禁用
    swipeToDismiss
    ,以防水龙头被误解为快速滑动关闭
  • 使用断点重写
    onLowMemory()
    ,以检查这是否是资源问题
  • 如果无意调用
    finish()
  • 该活动从具有的服务启动

        Intent startIntent = new Intent( this, WearActivity.class );
        startIntent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
        startActivity( startIntent );
    
    活动设置为android:launchMode=“singleTask”,但只有一个启动请求

    我已经没有主意了。有没有办法确定谁在发送停止消息?下面是完整的堆栈跟踪,通过在
    ActivityThread.handleMessage()
    中接收
    STOP\u activity\u HIDE
    系统消息来停止活动:

    编辑:
    作为对某些注释的响应,上面的堆栈跟踪不是由抛出的异常生成的。这正是我点击断点查看导致应用程序停止的调用历史的地方。该应用程序完全退出,我试图弄清楚它为什么要退出

    更新: 我终于找到了罪犯。通常,在我的应用程序关闭之前,我会在日志输出中提前几分钟获得以下信息:

    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.HOME活动(有额外功能)}

    移动手表似乎会增加计步器的步数,从而在手表的主屏幕上显示新的信息卡。这张卡打断了我的全屏活动并关闭了它。有人知道防止这种情况发生的方法吗?这感觉像是一个磨损bug,我不确定其他应用程序是否能够中断这样运行的前台应用程序


    我已经找到了我的应用程序关闭的原因,但只是因为有一点幸运的信息发送到了日志中。我仍然在寻找我最初问题的答案,以确定Android系统停止应用程序的原因。也许这是不可能的?

    对于我最初的问题,我没有答案,但我有一个解决办法来解决它引起的症状。我没有将我的应用程序作为全屏活动启动,而是在上下文流中创建一个通知,其中包含一个全屏操作。通知是持久的,因此即使其他卡进入流,它们也不会导致我的任务退出

    Iv'e在上为该问题提交了一个bug


    最初的问题仍然没有解决,但我怀疑它没有答案…

    通过查看logcat,我认为您的onStop方法有问题…不,我的onStop只是调用super.onStop()。它只是用来放置一个断点并捕获活动停止的点,以获得堆栈跟踪。任何地方都不会抛出异常。是否会抛出任何异常?我在你的日志中错过了它…发布完整的日志,这只是它的一部分。myRandomApp.WearActivity.onStop(WearActivity.java:76)上应该有一个例外什么是行
    ?收到的短信也会给您带来问题吗?或者它只是计步器通知弹出?它发生在所有新卡上,而不仅仅是计步器。通过手持设备上的Android Wear应用程序发送演示卡,轻松复制。值得注意的是,为了启动与我的应用程序关联的活动并使任务保持活动状态,我使用
    setDisplayIntent()
    的自定义布局集创建了通知。
      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)