我的安卓应用在某些设备上出现了基于Activitynotfoundexception的崩溃。我怎样才能重新生成它?

问题描述 投票:1回答:1

我有一个在Google Play上发布的Android应用。它工作得很好,但有些用户抱怨当它被打开时应用程序崩溃。在Play控制台,有%2,5的崩溃率,而且所有的都是 活动不属于例外情况. 但我或我的几个安卓用户朋友在实际设备上没有遇到任何崩溃。我也在几个模拟器上测试过,从api 21到30(因为崩溃报告上的Android版本不同),但还是没有问题。

我启用了proguard,这可能会导致这种异常,但我认为如果proguard是原因,所有用户都会遇到同样的问题,而不是其中的%2,5。

我的应用程序从一个闪屏活动开始,它只显示一个图像,1秒钟的延迟后调用主活动,技术上说是一个登录页面。如果用户点击 "通过网络登录 "按钮,就会被引导到webview活动。在%80%的崩溃报告中,它说找不到webview活动,其余的都是找不到主活动(登录)。所有的活动都在manifest文件中声明。

一个崩溃报告的例子。

android.content.ActivityNotFoundException: 
  at android.app.Instrumentation.checkStartActivityResult (Instrumentation.java:2069)
  at android.app.Instrumentation.execStartActivity (Instrumentation.java:1717)
  at android.app.Activity.startActivityForResult (Activity.java:5250)
  at android.support.v4.app.f.startActivityForResult (BaseFragmentActivityApi16.java:3)
  at android.app.Activity.startActivityForResult (Activity.java:5208)
  at android.support.v4.app.i.startActivityForResult (FragmentActivity.java:4)
  at android.app.Activity.startActivity (Activity.java:5579)
  at android.app.Activity.startActivity (Activity.java:5547)

  **at com.myPackageName.myAppName.MainActivity.a (MainActivity.java:33)
  at com.myPackageName.myAppName.MainActivity$c.onResponse (MainActivity.java:9)**

  at okhttp3.RealCall$AsyncCall.execute (RealCall.java:5)
  at okhttp3.internal.NamedRunnable.run (NamedRunnable.java:3)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
  at java.lang.Thread.run (Thread.java:919)

有什么建议可以告诉我应该从哪里挖掘?我怎么能再生这个崩溃呢?谢谢。

android crash proguard activitynotfoundexception
1个回答
0
投票

问题可能是你泄露了对你的活动的引用,后来这个活动被杀死,又因为任何原因被重新创建。然后使用你的活动的旧引用,就会导致崩溃。在你的堆栈跟踪中,我看到你有一个内部类MainActivity$c,它(如果它不是静态的)有一个隐式引用到你的活动类。所以如果你泄露了对MainActivity$c的引用,你也就泄露了对MainActivity的引用。检查你的代码是否有这种泄漏。

© www.soinside.com 2019 - 2024. All rights reserved.