开始新的清洁活动
有时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;
}
您可以overrride此回调。
@Override
protected void onSaveInstanceState(Bundle outState) {
}
,不叫超类的方法。
或
<activity
android:name=". PictureActivity"
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
我相信所有你需要做的就是设置该标志。我觉得你的选择是
startActivityForResult(intent,REQUEST_CODE_GALERY,Intent.FLAG_ACTIVITY_CLEAR_TASK)
或
startActivityForResult(intent,REQUEST_CODE_GALERY,Intent.FLAG_ACTIVITY_NO_HISTORY)
在文档中它说Intent.FLAG_ACTIVITY_NEW_TASK会恢复旧任务,如果它存在的话。这就是我想要避免的。 –
你是对的,我更新了。我觉得这两个选项可以帮助 –
Intent.FLAG_ACTIVITY_CLEAR_TASK只能与FLAG_ACTIVITY_NEW_TASK一起使用,用于Intent.FLAG_ACTIVITY_NO_HISTORY此标志将删除堆栈的活动,所以如果我们想回来的活动将是不可能的。这不是我想要做的。如果我们开始的活动应该从重新开始, –
您可以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);
}
});
}
所以你认为静态意图构建方法是什么问题?怎么样.. –
我已经把日志检查savedInstanceState,它始终是零。但会试试这个,谢谢 –