[ЗАКРЫТО]метод OnCreate() не работает должным образом в Android Зефир
У меня есть две активности называется А и В.
ActivityA (запуска) показывает данные списка (RecyclerView) и данные загружается с WebService.
ActivityB показывает деталь деталя списка когда я нажимаю деталь списка.
Проблема заключается в том:
Когда я нажимаю кнопку назад от ActivityB, метод ActivityA в OnCreate() работает и повторно загрузки уже загружены, как ДАННЫЕ перезапуске приложения. Я не хочу повторно загружать или повторно вызывать метод onCreate().
Я тестировал два устройства имеет предварительно Зефир ОС:
- Samsung Galaxy S5 (OS версии 4.4.4)
- Sony Xperia (OS версии 4.1.2)
и результат is:
Когда я нажимаю кнопку «Назад» из ActivityB, ActivityA не перегружает. ActivityA уже показывает последний позиционированный список. Я хочу это в Зефире.
Мой Зефир устройство Nexus 5 (OS версии 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>
[Изменено] Я НАШЕЛ REASEN
я ставлю некоторые Вход в ActivityA Lifecycle, и результат:
Когда я запустить приложение на Xperia.(Предварительный результат теста Зефир):
ActivityA состояние журнала:
- OnCreate
- OnStart
- onResume
затем выберите элемент списка и начиная ActivityB
ActivityA государственный журнал:
- OnPause
- OnStop
затем я нажимаю кнопку назад от ActivityB и перейдите обратно в
ActivityA состояние журнала:
- onRestart
- OnStart
- onResume
Когда я запустить приложение на Nexus 5. (результат теста Зефир):
ActivityA состояние журнала:
- OnCreate
- OnStart
- onResume
затем выберите элемент списка и начиная ActivityB
ActivityA состояние журнала:
- OnPause
- OnStop
- OnDestroy < - это причина, почему этот метод называется в Зефир
затем я нажимаю кнопку «Назад» из ActivityB и вернусь назад к A
ActivityA состояние журнала:
- OnCreate < - OnCreate() называется, вызывают onDestory() называется уже, это проблема
- OnStart
- onResume
ДЕФЕКТИВНОСТЬ ДЕЯТЕЛЬНОСТИ РАБОТАЕТ РАЗЛИЧНЫМИ В МАРШАМЛЛАХЕ, ПОЧЕМУ? ПОЧЕМУ Я ПОЛУЧИЛ ПРОБЛЕМУ.PLS HELP
Пожалуйста, отправьте код? – Raghavendra
Является ли Activity A объявленным любым специальным 'launchMode' или другими атрибутами, например' noHistory'? –
@Raghavendra: ok опубликует некоторый код КАК МОЖНО СКОРЕЕ – tsomone