У меня есть приложение для поддержки android os 4 и выше. Я использовал Asynctask для вызова веб-службы во время запуска приложения.Asynctask issue on android version <4
Позже я изменил свой minSdkVersion на 9. Для поддержки Android 2.3 и выше. Но тот же код бросает ниже ошибки.
Вызов AsyncTask из SplashActivity нити
mSplashTread = new Thread() { @Override public void run() { try { int waited = 0; while (mActive && (waited < mSplashTime)) { sleep(100); if (mActive) { waited += 100; } } } catch (InterruptedException e) { AppUtil.getInstance().logErrorMessage(TAG, e.getMessage()); } finally { if (mIsBackPressed) { finish(); } else { GetMobilePremissionWebservice getMobilePermissionWebservice = new GetMobilePremissionWebservice( mContext, SplashActivity.this); getMobilePermissionWebservice.getMobilePermissionInfo(); } } } };
Вход:
Вызванный: java.lang.RuntimeException: Невозможно создать обработчик внутри потока, который не вызвал Looper.prepare() в android.os.Handler. (Хан dler.java:121) в android.os.AsyncTask $ InternalHandler. (AsyncTask.java:421) в android.os.AsyncTask $ InternalHandler. (AsyncTask.java:421)
Я проверил паутина. Кто-то говорит, что Asynctask внутренне использует обработчик. когда он пытается получить доступ к пользовательскому интерфейсу от doInBackgrond(). Но тот же код работает отлично в os 4 и выше. Я не знаю, в чем проблема с Asynctask на Android версии 2.3.
Пожалуйста, помогите мне в этом.
Не могли бы вы отправить код своей реализации AsyncTask? –
Можете ли вы поделиться кодом? –
В каком потоке вы создаете первый экземпляр asynctask? Похоже, что внутренний потоковый обработчик не был создан в потоке пользовательского интерфейса, поэтому он выдает это исключение. – NazarK