Android:NoClassDefFoundError Android.os.AsyncTask

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 编辑:由谷歌

几周以来,我看到我的应用程序崩溃的次数越来越多,但以下情况除外

致命异常:java.lang.NoClassDefFoundError android.os.AsyncTask

这段代码已经运行了一个月没有出现任何问题,现在似乎在一些设备上失败了(75%的安卓2.3.x和25%的安卓4.0.3) 当我创建扩展AsyncTask的类的新实例时,它会失败

我从UI线程创建这个类


在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
    }
}