뒤로 버튼을 누르면 onPause가 호출되고 앱은 다시 시작될 때까지 일시 중지 상태로 유지됩니다. 아이콘이 나타나면 onDestroy가 호출되고 주 활동이 계속 중단됩니다.ActivityGroup에서 뒤로 버튼을 누르면 일시 중지되고 다음에 앱이 시작될 때 계속 종료됩니다.
설명하기 쉬운 클래스. 내가 알 수있는 한이 은이며 Nexus One에서만 발생합니다. 에뮬레이터 나 드로 이드에서 재현 할 수 없습니다.
I/ActivityManager( 132): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10100000 cmp=com.vimtips.testshutdown/.MainActivity }
I/ActivityManager( 132): Displayed activity com.vimtips.testshutdown/.MainActivity: 305 ms (total 305 ms)
D/MainActivity(1393): onPause called
I/ActivityManager( 132): Displayed activity com.vimtips.testshutdown/.MainActivity: 302 ms (total 302 ms)
D/MainActivity(1393): Shutting down
이 안드로이드의 소스 코드에서 찾고 있지만, 정상적인 활동에 그냥 작업 그룹을 일이 표시되지 않습니다, 나는 그 이유를 알아낼 수 없습니다 :
package com.vimtips.testshutdown;
import android.app.ActivityGroup;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
public class MainActivity extends ActivityGroup {
private static final String TAG = "MainActivity";
private int counter = 3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK) {
if(counter-- > 0) return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onPause() {
super.onPause();
Log.d(TAG, "onPause called");
}
@Override
public void onDestroy() {
super.onDestroy();
if(isFinishing()) {
Log.d(TAG, "Shutting down");
}
}
}
그리고 여기 로그입니다. 내 앱에 심각한 문제가 발생했습니다.
왜 이런 일이 일어날 지 알고 있습니다.
Nexus One이 주 활동 인 경우이 플래그를 추가/수정하려면 어떻게해야하나요? 나는 그 매니페스트 어딘가에서 추측합니까? 드로이드에서 무슨 일이 일어나고있는거야? – synic
AndroidManifest의 모든 활동에 launchMode를 지정할 수 있습니다. singleTop을 launchMode로 사용해보십시오.이 메서드는 onResume을 호출하지 않고 해당 활동의 onNewIntent() 메서드를 호출합니다. Btw는 현재 onCreate() 및 onResume()에서 얻고있는 Intent 플래그를 확인할 수 있습니까? – Karan
나는이 상황이 불가능한 것처럼 보이게하는 singleTask ..를 이미 통과하고있다. 누군가가 활동을 시작한 후 활동을 시작하면 이전 활동이 완료되기 전에 새 활동이 작성됩니다. 즉, 두 인스턴스가 실제로 잠시 동안 살아 있음을 의미합니다. 네가 가지고 있다면 Nexus One에서 단 하나의 활동으로 제공하고 singleTask로 설정 한 수업에서 직접 시험해보십시오. G1, Droid 또는 에뮬레이터에서는 발생하지 않습니다. – synic