[CLOSED]
我有一项名为A和B的两项活动。
ActivityA(Launcher)显示列表数据(RecyclerView),并从WebService下载数据。
当我按下列表项时,ActivityB显示列表项详细信息。
问题是:
当我按下ActivityB的后退按钮时,ActivityA的onCreate()方法工作并重新下载已下载的数据,如重新启动应用程序。我不想重新下载或重新调用onCreate()方法。
我测试了两个设备有前Marshmallow OS:
结果是:
当我按下ActivityB的后退按钮时,ActivityA不会重新下载。 ActivityA已经显示了最后定位的列表。我希望在Marshmallow中使用它。
我的Marshmallow设备是Nexus 5(操作系统版本6.0.1)
我该如何解决这个问题?
[以下某些代码]
// This is ActivityA
public class MainView extends AppCompatActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_view);
...
if (NetworkChecker.isNetAvailable(context)) {
mDataSet = update(); // this method calling WebService
} else {
mDataSet = Database.getDatas(); // this method reading datas from sqlite.
}
createListView(mDataSet);
...
}
private void createListView(List<NamecardEntity> mDataSet) {
mRecyclerView = (RecyclerView) findViewById(R.id.itemsRecyclerView);
mRecyclerView.setHasFixedSize(true);
RecyclerView.ItemDecoration itemDecoration =
new DividerItemDecorator(getContext(), LinearLayoutManager.VERTICAL);
mRecyclerView.addItemDecoration(itemDecoration);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getContext());
mRecyclerView.setLayoutManager(mLayoutManager);
mAdapter = new ListAdapter(getActivity(), getActivity().getApplicationContext(), mDataSet);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.addOnScrollListener(onScrollListener);
}
...
}
public class ListAdapter extends RecyclerSwipeAdapter<ListAdapter.SimpleViewHolder> {
...
@Override
public void onBindViewHolder(final SimpleViewHolder viewHolder, final int position) {
Entity item = mDataset.get(position);
...
viewHolder.front.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
activity.startActivity(new Intent(mContext, DetailView.class));
}
});
...
}
}
// This is ActivityB
public class DetailView extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.detail_view);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle("");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
...
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_activity_filter, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
case R.id.action_filter:
// TODO filter
return true;
}
return true;
}
}
// In Manifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainView"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DetailView"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar" />
</application>
[已编辑]我发现了
我将一些Log放入ActivityA生命周期,结果是:
当我在Xperia上运行应用程序时。 (棉花糖前测试结果):
ActivityA状态日志是:
然后选择列表项并启动ActivityB
ActivityA状态日志是:
然后我按下ActivityB的后退按钮并导航回A
ActivityA状态日志是:
当我在Nexus 5上运行应用程序时(Marshmallow测试结果):
ActivityA状态日志是:
然后选择列表项并启动ActivityB
ActivityA状态日志是:
然后我按下ActivityB的后退按钮并导航回A
ActivityA状态日志是:
ACSHITY LIFECYCLE在MARSHMALLOW中的作用不同,为什么?这就是我遇到问题的原因。 PLS帮助