2017-08-15 35 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

所以你认为静态意图构建方法是什么问题?怎么样.. –