2017-08-15 36 views
0

有時OS可能會殺了你的活動,並保存其狀態,並再次恢復。我設定PagerAdapter一個viewPager到我的活動,我想從任何恢復狀態創建adpater不是新實例的新實例。開始新的清潔活動

這是我開始我的活動:

Intent intent = PicturActivity.Builder(getContext(), Tools.APPLICATION, position); 
startActivityForResult(intent, REQUEST_CODE_GALERY); 

在PictureActivity:

public static Intent Builder(@NonNull Context context, @Tools.ObjectLocation int listLocation, int position) { 
     Intent intent = new Intent(context, PictureActivity.class); 
     intent.putExtra(KEY_EXTRA_POSITION, position); 
     return intent; 
    } 

回答

0

您可以overrride此回調。

@Override 
protected void onSaveInstanceState(Bundle outState) { 
} 

,不叫類的方法。

<activity 
    android:name=". PictureActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize"> 
</activity> 
+0

我已經把日誌檢查savedInstanceState,它始終是零。但會試試這個,謝謝 –

0

我相信所有你需要做的就是設置該標誌。我覺得你的選擇是

startActivityForResult(intent,REQUEST_CODE_GALERY,Intent.FLAG_ACTIVITY_CLEAR_TASK) 

startActivityForResult(intent,REQUEST_CODE_GALERY,Intent.FLAG_ACTIVITY_NO_HISTORY) 
+0

在文檔中它說Intent.FLAG_ACTIVITY_NEW_TASK會恢復舊任務,如果它存在的話。這就是我想要避免的。 –

+0

你是對的,我更新了。我覺得這兩個選項可以幫助 –

+0

Intent.FLAG_ACTIVITY_CLEAR_TASK只能與FLAG_ACTIVITY_NEW_TASK一起使用,用於Intent.FLAG_ACTIVITY_NO_HISTORY此標誌將刪除堆棧的活動,所以如果我們想回來的活動將是不可能的。這不是我想要做的。如果我們開始的活動應該從重新開始, –

1

您可以startActivity這樣

@Override 
public void onBindViewHolder(RecyclerViewHolders holder, int position) { 

    holder.setClickListener(new ItemClickListener() { 
     @Override 
     public void onClick(View view, int position, boolean isLongClick) { 

      Intent intent = new Intent(view.getContext(), PictureActivity.class); 
      intent.putExtra(KEY_EXTRA_POSITION, position); 
      view.getContext().startActivity(intent); 
     } 
    }); 
} 
+0

所以你認爲靜態意圖構建方法是什麼問題?怎麼樣.. –