У меня ANR (приложение не отвечает) . Я пытаюсь разделить задачи на потоки с помощью AsyncTask, однако это кажется хуже, чем раньше.
Я делаю что-то не так, но не могу понять, в чем проблема.

Как видите, основной поток занимает 6 миллионов миллисекунд, что, я думаю, не очень хорошо.
Чтобы повысить производительность, я сделал это с помощью onCreate()
методов различных действий:
AsyncTask.execute(new Runnable() {
@Override
public void run() {
//TODO your background code
if(sPreferenceManager.getBoolean(Constants.SharedPreferences.UPDATE_REQUIRED))
{
log(Log.DEBUG,"mediaplayeractivity","UPDATE_REQUIRED");
mViewModel.getmInteractor().updateDatabaseAfterLogin();
}
}
});
AsyncTask.execute(new Runnable() {
@Override
public void run() {
//TODO your background code
initServices(savedInstanceState);
}
});
AsyncTask.execute(new Runnable() {
@Override
public void run() {
Fabric.with(GomusApplication.this, new Crashlytics());
//TODO your background code
AndroidThreeTen.init(GomusApplication.this);
initPreferences();
sInstance = GomusApplication.this;
initRealm();
appComponent = DaggerAppComponent.builder()
.appModule(new
AppModule(GomusApplication.this)).build();
appComponent.inject(GomusApplication.this);
}
});
Я разделил задачи на AsyncTasks . Однако это ухудшило производительность!
ОБНОВЛЕНИЕ: Я изменил свои AsyncTasks, как это, но все же я не вижу каких-либо странных улучшений:
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... voids) {
if(sPreferenceManager.getBoolean(Constants.SharedPreferences.UPDATE_REQUIRED))
{
log(Log.DEBUG,"mediaplayeractivity","UPDATE_REQUIRED");
mViewModel.getmInteractor().updateDatabaseAfterLogin();
}
return null;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null);
Я также сделал некоторыеизменения макета на макетах ограничений, такие как некоторые поля, отсутствовали, и я добавил их. Я удалил несколько больших изображений, чтобы увеличить производительность.
Однако то, что я сделал, ухудшило производительность. Потребовалось 3M миллисекунды для запуска основного потока, но сейчас это 6M миллисекунд.
Мне очень жаль, я никогда не пытался увеличить производительность до сих пор, поэтому у меня нет достаточных знаний. Но я провел некоторое исследование, и люди говорят, что используют AsyncTask.
Любая помощь будет оценена.
Спасибо!