在Google Play开发者控制台的“崩溃和ANR”中,我得到了这样的报告:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.AssetManager android.content.res.Resources.getAssets()' on a null object reference
at android.app.LoadedApk.getAssets(LoadedApk.java:590)
at android.app.LoadedApk.makeApplication(LoadedApk.java:646)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5088)
at android.app.ActivityThread.access$1600(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1509)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5944)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1389)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184)

出现此问题的设备是Galaxy S4,并且运行Android 5.0

可能是什么-我的代码中没有一行,为什么会失败?
非常感谢!

最佳答案

我的控制台中也有这个。
当用户在当前正在更新或之后更新应用程序时启动该应用程序时,似乎会发生这种情况。

可能的解决方法是检查getResources在应用程序启动时是否返回null,并在执行该操作时将其杀死:

public class DevToolsApplication extends Application {
    private static final String TAG = "DevToolsApplication";

    @Override
    public void onCreate() {
        super.onCreate();
        AppLogger.i(TAG, "app start...");
        checkAppReplacingState();
    }

    private void checkAppReplacingState() {
        if (getResources() == null) {
            AppLogger.w(TAG, "app is replacing...kill");
            Process.killProcess(Process.myPid());
        }
    }
}

请参阅此以获取更多信息
https://issuetracker.google.com/issues/36972466

关于android - 启动应用程序时,Android代码中的异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31439228/

10-11 22:38
查看更多