2016-09-26 2 views
0

Я не уверен, что полностью понимаю, что нужно сделать для извлечения данных после возвращения из дочерней активности. Мне не нужно передавать данные родительской активности. Я использовал this для справки, они упоминают onPause и onResume, а также возможные решения, но следует ли использовать сохраненные настройки вместо onSaveInstanceState и onRestoreInstanceState? Он не справляется с фоновым заданием проверки булевых. Я также использовал это this для дальнейшей помощи.Ошибка при выполнении фоновой задачи после возврата из дочерней задачи

код ниже:

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    // Save UI state changes to the savedInstanceState. 
    // This bundle will be passed to onCreate if the process is 
    // killed and restarted. 
    savedInstanceState.putString("type",type); 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    // Restore UI state from the savedInstanceState. 
    // This bundle has also been passed to onCreate. 
    super.onRestoreInstanceState(savedInstanceState); 
    type = savedInstanceState.getString("type"); 
} 

public class getFeed extends AsyncTask<String, Void, Void>{ 
    @Override 
    protected Void doInBackground(String... strings) { 
     ParseQuery<ParseObject> contentFeed = new ParseQuery<>("UserCommentary"); 
     if(type.equals("object1")){ 
      //Query for object1 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 
    else if(type.equals("object2")){ 
     //Query for object2 
    } 

    return null; 
} 

@Override 
protected void onPostExecute(Void aVoid) { 
    super.onPostExecute(aVoid); 
    mySwipeRefreshLayout.setRefreshing(false); 
    commentary.setAdapter(vCommentDetailAdapter); 
    vCommentDetailAdapter.notifyDataSetChanged(); 
} 

EDIT: Добавлено больше информации к коду

+0

Когда вы выполняете свой AsyncTask? –

+0

Это выполняется по методу onCreate –

+0

вы проверяете, что значение 'type' не равно нулю? – samirk433

ответ

0

В ретроспективе Вашего комментария, что getFeed AsyncTask становится выполнен в onCreate().

Вы в основном называете это слишком раньше. См. here для жизненного цикла Android-активности.

onCreate()/onStart() вызывается до onRestoreInstanceState(). Поэтому поставьте задачу в свой метод onResume().

+0

Не означает ли это, что его нужно вызывать каждый раз из 'onResume'? –

+0

@ RGM-79FPGMStriker. Yup, вы не можете изменить жизненный цикл Android. Но если вы хотите вызвать его из 'onCreate', вы можете сохранить значение типа в' SharedPreferences' –

+0

, можно просто вызвать 'onRestoreInstanceState' из create on? –

0

Я обнаружил, что этот solution выполняет то, что мне нужно, без необходимости сохранения данных. & перезарядка данных.

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