这个问题一直困扰着我,我找不到满意的解决方案。
在Android模拟器上创建特定对象很多次(并非总是)我得到NoClassDefFoundError:android.os.AsynchTask。
我尝试过多次删除和重新添加外部库的方法,擦除模拟器,重新启动IntelliJ(工作一次,但后来得到了相同的错误。)此时我想做的就是构建最准备的AsyncTask我仍然得到错误。
以下是整个错误消息:
08-06 16:24:43.546: ERROR/AndroidRuntime(331): FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: android.os.AsyncTask
at com.myapp.activity.StatisticsActivity.onCreate(StatisticsActivity.java:79)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
at android.app.ActivityThread.access$2300(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
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:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
模拟器运行2.2,我的minSDK为8.这是有问题的代码:
public class StatisticsActivity extends TabActivity implements AsynchDataDisplay{
...
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.statistics);
StatisticsProvider sp = new StatisticsProvider();
...
}
}
StatisticsProvider对象是:
private class StatisticsProvider extends AsyncTask{
@Override
protected Object doInBackground(Object... objects) {
return null;
}
}
答案 0 :(得分:8)
好的,看起来这是其中一个版本的Google Play服务的问题。见https://code.google.com/p/android/issues/detail?id=81083
看起来似乎可以添加:
try {
Class.forName("android.os.AsyncTask");
}
catch(Throwable ignore) {
// ignored
}
进入Application#onCreate()
如果您还没有Application类,则创建一个从android.app.Application
和
#onCreate()
<application android:icon="@drawable/icon_game_launcher"
android:label="@string/app_name"
android:name="au.com.mycompany.myapp.MyApplication">
答案 1 :(得分:6)
我想我已经破解了它。
用于在我的应用中加载广告的线程会在早期抛出一个未捕获的异常,在某种程度上我不会100%理解,导致工作线程停止响应。当程序试图创建AsyncTask时,类加载器无法正常工作。
道德,休假,然后带着新鲜的眼睛回来。
答案 2 :(得分:0)
尝试在StatisticsProvider中添加一个简单的构造函数并检查。