Android:NoClassDefFoundError Android.os.AsyncTask
几周以来,我看到我的应用程序崩溃的次数越来越多,但以下情况除外 致命异常:java.lang.NoClassDefFoundError android.os.AsyncTask 这段代码已经运行了一个月没有出现任何问题,现在似乎在一些设备上失败了(75%的安卓2.3.x和25%的安卓4.0.3) 当我创建扩展AsyncTask的类的新实例时,它会失败 我从UI线程创建这个类Android:NoClassDefFoundError Android.os.AsyncTask,android,android-asynctask,noclassdeffounderror,Android,Android Asynctask,Noclassdeffounderror,几周以来,我看到我的应用程序崩溃的次数越来越多,但以下情况除外 致命异常:java.lang.NoClassDefFoundError android.os.AsyncTask 这段代码已经运行了一个月没有出现任何问题,现在似乎在一些设备上失败了(75%的安卓2.3.x和25%的安卓4.0.3) 当我创建扩展AsyncTask的类的新实例时,它会失败 我从UI线程创建这个类 在SDK中定义的那个类怎么可能找不到呢?它看起来像是另一个Google Play Services bug 编辑:由谷歌
在SDK中定义的那个类怎么可能找不到呢?它看起来像是另一个Google Play Services bug 编辑:由谷歌员工确认=>我有相同的错误:
BuscaDatosJugador().execute(participante.getIconImageUrl(),String.valueOf(altoenvio), String.valueOf(contador));
我的解决方案:
final Runnable r = new Runnable()
{
public void run()
{
try {
--- my code ---
}
};
r.run();
}
同样的问题。
我在安卓4.0.3设备上看到95%的案例。2.3设备的剩余5%
错误是从代码的不同部分随机发生的。
一些例子:
java.lang.NoClassDefFoundError: android/os/AsyncTask
at android.webkit.WebView.setupPackageListener(WebView.java:1305)
at android.webkit.WebView.<init>(WebView.java:1176)
at android.webkit.WebView.<init>(WebView.java:1136)
及
java.lang.NoClassDefFoundError:android.os.AsyncTask
位于android.webkit.WebView.setupPackageListener(WebView.java:1385)
位于android.webkit.WebView(WebView.java:1192)
位于android.webkit.WebView(WebView.java:1150)
位于android.webkit.WebView(WebView.java:1135)
位于android.webkit.WebView(WebView.java:1106)
位于android.webkit.WebView(WebView.java:1093)
位于com.google.android.gms.ads.internal.util.g.f(源文件:400)
位于com.google.android.gms.ads.internal.util.g.a(源文件:385)
我们完全不清楚为什么会发生这些错误。通常我在stacktrace中看不到任何指向我的代码的东西 是的,谷歌play服务的一个版本似乎有问题。看 解决方法是添加:
try {
Class.forName("android.os.AsyncTask");
}
catch(Throwable ignore) {
// ignored
}
进入您的应用程序#onCreate()
这似乎是为了确保根类加载器加载AsyncTask,这样就可以从Play服务中使用它。我在android 2.3.3上遇到了相同的错误,但在4.0+上相同的应用程序是稳定的。这是一个免费模式,只有在运行Google Admob广告的免费模式下才会发生错误。因此,这个错误必须与此相关,但我没有详细信息。下面是我如何解决这个问题的: 执行一条语句,该语句将导致在加载ads之前加载AsyncTask类 步骤1:创建虚拟AsyncTask扩展类
public class DummyAsyncTask extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
return null;
}
}
在上面的步骤2之后,实例化AsyncTask扩展类的所有其他代码部分都会正常运行。您是否愿意分享您的代码?这与代码无关。我从代码的不同部分得到了这些随机崩溃,这些崩溃已经有一个月没有更新了。这不是一个代码问题,可能是一个项目/构建问题,但我不认为AsyncTask上的NoClassDefFoundError是可能的……我也开始了解这些问题。因此,fr均来自2.3.x和不同型号/品牌。我想知道这是否与谷歌Play服务的更新有关?我也面临着同样的问题@Shakti Malik抱歉,我刚刚也发布了您的问题;)这看起来确实像是谷歌播放服务的问题这是谷歌播放服务的错误。我不想更新我的代码作为解决方法。我想继续使用asynctasks,它允许我轻松地更新UI
try {
Class.forName("android.os.AsyncTask");
}
catch(Throwable ignore) {
// ignored
}
public class DummyAsyncTask extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
return null;
}
}
public class MainActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new DummyAsyncTask();
.
.some code
.
load your ads here
}
}