2013-09-11 5 views
0

Привет Я реализую пользовательский asynctaskloader для загрузки данных в фоновом режиме, и мне нужно, чтобы процесс загрузки выполнялся, даже если пользователь перешел из приложения. Проблема заключается в том, что, как только пользователь нажимает кнопку меню, например, вызывается loader onStopLoading(), а затем вызывается loadInbackgroud(), чтобы перезагрузить процесс загрузки.AsyncTaskLoader перезапускается, когда активность воссоздана

Любые идеи о том, как предотвратить перезагрузку загрузчика каждый раз, когда я выхожу из программы или поворачиваю экран, учитывая, что во время процесса загрузки я получаю частичную блокировку слежения.

P.S: Погрузчик прикреплен к фрагменту, а для фрагмента RetainInstance установлено значение true.

Заранее спасибо.

+0

Код кода код потребности – Trikaldarshi

ответ

0

Считаете ли вы использование IntentService вместо AsyncTask?

IntentService - это компонент, который работает в фоновом режиме и не привязан к жизненному циклу активности, поэтому не будет затронут, когда фрагмент/действие приостановлено/перезапущено/уничтожено. Вы все равно можете публиковать результаты/результаты/сбои в работе или прослушиватели на основе фрагментов, используя ResultReceiver.

Очень простой пример кода:

public class MyService extends IntentService 
{ 
    public MyService() 
    { 
     super("MyService"); 
    } 

    @Override 
    protected void onHandleIntent(Intent intent) 
    { 
     // Perform your loading here ... 

     publishOutcome("Success"); 
    } 

    private void publishOutcome(String outcome) 
    { 
     Bundle outcomeData = new Bundle(); 
     outcomeData.putString(OUTCOME, outcome);   
     receiver.send(MY_OUTCOME, outcomeData); 
    } 
} 

Для более детального обсуждения AsyncTask против IntentService взглянуть на эту StackOverflow question.

Смежные вопросы