Vraag Android: NoClassDefFoundError android.os.AsyncTask


Sinds een paar weken zie ik steeds meer crashes van mijn app met de volgende uitzondering

Fatale uitzondering: java.lang.NoClassDefFoundError android.os.AsyncTask

Deze code loopt al maanden zonder problemen, en het lijkt nu te mislukken op sommige apparaten (75% Android 2.3.x en 25% Android 4.0.3) Het mislukt als ik een nieuw exemplaar van een klasse maak dat AsyncTask uitbreidt.

Ik maak deze klasse van de UI-thread.

Hoe kan die klasse niet worden gevonden zoals deze is gedefinieerd in de SDK?


15
2017-11-25 07:57


oorsprong


antwoorden:


Ja, het lijkt erop dat het een probleem is met een van de versies van Google Play-services. Zien https://code.google.com/p/android/issues/detail?id=81083

Een work-around is om toe te voegen:

try {
      Class.forName("android.os.AsyncTask");
}
catch(Throwable ignore) {
      // ignored
}

in jouw Application#onCreate()

dit lijkt ervoor te zorgen dat de root-classloader AsyncTask laadt, zodat het vervolgens beschikbaar is vanuit Play Services.


11
2017-12-02 08:24



Het lijkt op weer een Google Play Services-fout ...

https://groups.google.com/forum/#!topic/google-admob-ads-sdk/_x12qmjWI7M

Bewerken: bevestigd door Google-personeel => https://groups.google.com/d/msg/google-admob-ads-sdk/_x12qmjWI7M/9ZQs-v0ZZTMJ


7
2017-11-27 16:31



Hetzelfde probleem hier. Ik zie ze voor 95% van de gevallen op Android 4.0.3-apparaten. resterende 5% voor 2.3 apparaten

Fouten komen willekeurig voor uit verschillende delen van de code. Een paar voorbeelden:

   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)

en

   java.lang.NoClassDefFoundError: android/os/AsyncTask
   at android.webkit.WebView.setupPackageListener(WebView.java:1354)
   at android.webkit.WebView.access$10900(WebView.java:363)
   at android.webkit.WebView$PrivateHandler.handleMessage(WebView.java:10411)

en

   java.lang.NoClassDefFoundError: android.os.AsyncTask
   at android.webkit.WebView.setupPackageListener(WebView.java:1385)
   at android.webkit.WebView.<init>(WebView.java:1192)
   at android.webkit.WebView.<init>(WebView.java:1150)
   at android.webkit.WebView.<init>(WebView.java:1135)
   at android.webkit.WebView.<init>(WebView.java:1106)
   at android.webkit.WebView.<init>(WebView.java:1093)
   at com.google.android.gms.ads.internal.util.g.f(SourceFile:400)
   at com.google.android.gms.ads.internal.util.g.a(SourceFile:385)

het is volkomen onduidelijk waarom deze fouten zich voordoen. meestal zie ik niets in de stacktrace naar mijn code.


1
2017-11-30 17:18



Ik heb dezelfde foutmelding:

BuscaDatosJugador().execute(participante.getIconImageUrl(),String.valueOf(altoenvio), String.valueOf(contador));

Mijn oplossing:

final Runnable r = new Runnable()
{
    public void run() 
    {
        try {
             --- my code ---
        }
    };

    r.run();
}

0
2017-11-28 12:40



Ik ondervond dezelfde fout op Android 2.3.3, maar dezelfde app was stabiel op 4.0+. Het is een Freemium en de fout treedt alleen op in de FREE-modus, die Google Admob-advertenties uitvoert. Dus de fout moet hiermee verbonden zijn, maar ik heb geen detail. Hier is hoe ik het probleem heb opgelost:

Voer een instructie uit die ervoor zorgt dat de klasse AsyncTask wordt geladen voordat de advertenties worden geladen.

stappen 1: Maak een dummy AsyncTask-uitbreidingsklasse

public class DummyAsyncTask extends AsyncTask<Void, Void, Void>{

    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub
        return null;
    }
}

stap 2: alleen in uw hoofdactiviteit:

public class MainActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        new DummyAsyncTask();
        .
        .some code
        .
        load your ads here
    }
}

Na stap 2 hierboven wordt alle overige codegedeelten die de AsyncTask-uitgebreide klasse instantiseren normaal uitgevoerd.


0
2017-12-08 00:21