一些客户在启动应用程序时直接遇到应用程序崩溃。
这是主要活动中 onCreate() 方法的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String deviceId = Local.getUniqueID(this);
Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler(deviceId));
setContentView(R.layout.main);
}
并getUniqueId()
这样做:
public static String getUniqueID(Context context) {
return Secure.getString(context.getContentResolver(), Secure.ANDROID_ID);
}
这个调用是否有可能使应用程序崩溃?我可以打电话给这个onCreate()
吗?还是它Thread.setDefaultUncaughtExceptionHandler()
崩溃了?
遇到此问题的用户甚至看不到应用程序的启动画面,而且我无法在我拥有的任何设备上重现该问题。
CustomExceptionHandler
只需获取异常/错误的堆栈跟踪并将其与设备 ID 一起发送到服务器。我从遇到问题的用户那里获得了一个设备 ID,但它不在数据库中。
任何的想法?在任何设备上的开发过程中,我从来没有遇到过这个问题。这可能是什么原因?不要犹豫,询问更多细节。谢谢
编辑:我想我发现了应用程序崩溃时的堆栈跟踪:
E/AndroidRuntime(10067): FATAL EXCEPTION: main
E/AndroidRuntime(10067): java.lang.RuntimeException: Unable to instantiate application android.app.Application: java.lang.NullPointerException
E/AndroidRuntime(10067): at android.app.LoadedApk.makeApplication(LoadedApk.java:482)
E/AndroidRuntime(10067): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3909)
E/AndroidRuntime(10067): at android.app.ActivityThread.access$1300(ActivityThread.java:122)
E/AndroidRuntime(10067): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1184)
E/AndroidRuntime(10067): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(10067): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(10067): at android.app.ActivityThread.main(ActivityThread.java:4340)
E/AndroidRuntime(10067): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(10067): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(10067): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(10067): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(10067): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(10067): Caused by: java.lang.NullPointerException
E/AndroidRuntime(10067): at android.app.LoadedApk.initializeJavaContextClassLoader(LoadedApk.java:362)
E/AndroidRuntime(10067): at android.app.LoadedApk.getClassLoader(LoadedApk.java:305)
E/AndroidRuntime(10067): at android.app.LoadedApk.makeApplication(LoadedApk.java:474)
E/AndroidRuntime(10067): ... 11 more