Podczas normalnego rozwoju zauważyłem, że określona aktywność przestała odpowiadać po raz drugi.onResume() nie jest wywoływany po raz drugi, gdy uruchamiane jest działanie
tj menu->(intent)->activity->(back button)->menu->(intent)
Nie ma nic istotne w LogCat.
ja nawet nie wiem od czego zacząć, ani co to debugowania kodu, aby pokazać tak oto onClick
i onResume
fragmenty:
if (!dictionary.getClassName().equals("")) {
this.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent i;
i = new Intent(mContext, NVGlobeNavigatorVC.class);
i.putExtra("PAGE_TITLE", title);
i.putExtra("TITLE", _dictionary._title);
mContext.startActivity(i);
});
} else {
findViewById(R.id.greaterthan).setVisibility(View.GONE);
}
oraz w działalności rusza:
@Override
protected void onResume() {
super.onResume();
...
Nie ma też nic niezwykłego:
<activity
android:name=".NVViews.NVGlobeNavigatorVC"
android:theme="@style/WindowTitleBackground"
android:label="GlobeNavigator"/>
For clar ia, umieściłem punkty przerwania na mContext.startActivity(i)
i super.onResume()
. Klikam na widok z onClickListener
i oba punkty przerwania są trafiane zgodnie z oczekiwaniami. Następnie naciśnij przycisk powrotu, który powoduje powrót do menu. onPause()
jest wywoływany zgodnie z oczekiwaniami.
Dotknij widok, aby ponownie uruchomić działanie, a punkt przerwania na startActivity
został trafiony, ale nie w onResume()
w działaniu docelowym. Ekran staje się czarny i jedynym sposobem na ponowne uruchomienie jest ponowne uruchomienie aplikacji. Jeśli wstrzymam debugger, zatrzymuje się w dalvik.system.NativeStart()
, co oznacza, że działanie nigdy nie zostanie ponownie uruchomione.
Nie sądzę, że jest to istotne, ale używam Intellij IDEA i usunąłem wszystkie katalogi wyjściowe, unieważniłem pamięci podręczne i wykonałem pełną przebudowę.
Docelowe API to 8. Przetestowałem w wersji 2.3 i 4.0.4.
Wszelkie pomysły? Jestem zdumiony.
[EDIT]
W , ja zaoszczędzić trochę rzeczy do preferencjach. Celem onResume()
jest dostać je z powrotem:
@Override
protected void onPause() {
super.onPause();
SCPrefs.setGlobeViewViewPoint(globeView.getViewPoint());
SCPrefs.setGlobeViewZoom(globeView.getZoom());
SCPrefs.setGlobeViewScale(globeView.getScale());
}
czy drugie działanie jest prawidłowo wywoływane? – stinepike
@StinePike Nie powinno być wywoływane, jeśli 'Activity' jest w tle. Czy zastępujesz 'onPause()' i robisz cokolwiek tam? – codeMagic
@StinePike Nie jest wywoływany, ale nie spodziewam się, że tak jest, ponieważ jest na szczycie stosu i mało prawdopodobne, że Android zniszczy moją aktywność. – Simon