我正在研究Android市场上主机的应用程序.有时(每月一次)我收到一份崩溃报告:
无法实例化应用程序java.lang.ClassNotFoundException
应用下载量在10,000-50,000之间.我不知道为什么这些异常会在某些设备上产生,而不是全部(我在3种不同的设备上进行了测试,而且我无法在我的端部重新制作它).
我在不同的Android论坛上阅读有关该问题的文章/建议,但我没有成功解决它.有没有人面临类似的问题,并建议我该怎么办?
注意: 我正在扩展这样的应用程序类
public class MyApplication extends Application {
}
Run Code Online (Sandbox Code Playgroud)
我在manifest.xml中注册它
<application android:icon="@drawable/app_icon"
android:label="@string/my_app_name" android:name="MyApplication">
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪 :
java.lang.RuntimeException: Unable to instantiate application com.xyz.MyApplication java.lang.ClassNotFoundException: com.xyz.MyApplication in loader dalvik.system.PathClassLoader[/mnt/asec/com.xyz-1/pkg.apk]
at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:650)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4238)
at android.app.ActivityThread.access$3000(ActivityThread.java:126)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2076)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4633)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.xyz.MyApplication in loader dalvik.system.PathClassLoader[/mnt/asec/com.xyz-1/pkg.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
at android.app.Instrumentation.newApplication(Instrumentation.java:942)
at android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:645)
Run Code Online (Sandbox Code Playgroud)
我不知道为什么应用程序崩溃在某些设备上并非全部.
我认为问题在于我在10个不同的地方使用过的getApplication().所以我使用单例模式来解决这个问题.
public class MyApplication extends Application {
private static MyApplication me;
@Override
public void onCreate() {
super.onCreate();
me = this ;
}
public static MyApplication getInstance() {
return me;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我使用了像这样的getApplication()
MyApplication application = MyApplication.getInstance();
Run Code Online (Sandbox Code Playgroud)
绝对的
MyApplication application = (MyApplication) getApplication();
Run Code Online (Sandbox Code Playgroud)
我已经在市场上上传了固定版本,现在正在等待这种崩溃.如果一切顺利(如果2周内没有更多的崩溃),那么我将结束这个问题.同时,任何人都有更好的想法或知道解决方案,请分享.
谢谢,
| 归档时间: |
|
| 查看次数: |
14964 次 |
| 最近记录: |