Android 타사가 Application을 켜면 Launcher가 켜져 재부팅되는 문제
1867 단어 안드로이드 지식 포인트 모음
문제.
처음 이 문제에 부딪혔을 때 테스트 학생은 매번 처음으로 앱을 설치한 후에 2단계 인터페이스를 열고 백스테이지로 물러난 다음에 Launcher 인터페이스에서 Icon 아이콘을 누르면 앱이 다시 시작하고 첫 페이지로 이동하는 것을 발견할 수 있다. 지난번에 열린 2단계 인터페이스로 이동하는 것이 아니라 첫 페이지로 이동하는 것이다.그러나 프로세스kill을 떨어뜨린 후 Launcher 인터페이스에서 시작하고 2단계 인터페이스--Home에서 백엔드-로 이동하여 Launcher 인터페이스를 다시 시작하면 문제없습니다.
처음에 나도 궁금했다. 그의 조작도 그렇고 분석을 통해 어느 부분에 마각이 드러났는데 바로 처음으로 앱을 시작한 조작이었다.처음 설치할 때 제3자 설치기를 통해 설치하고 끝나면 제3자 앱에서'열기'버튼을 눌러야 한다.프로세스 사멸 후 작업은 Launcher 인터페이스에서 직접 시작됩니다.여기에는 반드시 프로세스 문제와 관련될 것이다. 그리고 제3자 앱의 시작과 Launcher가 앱을 시작하는 PID는 다르다.
분석하다.
예를 들어 제3자 앱에서 앱을 시작할 때 그taskId는 300이고 백엔드로 돌아가서 Launcher에서 Icon을 클릭하면 그taskId는 300이다.이때MainActivity가singleTask로 설정되어 있다면, 위의 모든 인터페이스를clear로 삭제합니다.첫 번째 부팅은 2단계 인터페이스에 머물러 있으나, 라운서에서 두 번째 부팅하면 다시 부팅돼 첫 페이지에 머무는 이유다.첫 번째 2단계 인터페이스가 두 번째로 시작된 MainActivity에 의해 클리어에 떨어졌기 때문이다.
해결책
인터넷에 몇 가지 해결 방법을 소개한 글이 있는데, 여기서 나는 다음 것만 말한다. Launch 인터페이스에서 그것이 뿌리 창고에 있는지 아닌지를 판단하는 것이다.만약 그렇지 않다면, 이미 다른 작업 창고에서 시작되었다는 것을 증명하면finish에서 종료합니다.
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// , , Launcher App,
// , MainActivity SingleTask, Activity.
// , Launcher App , , 。
// , finish, MainActivity.
if (!isTaskRoot()) {
finish();
return;
}
}
참고 자료
http://blog.csdn.net/zhangcanyan/article/details/52777265
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
android 중?attr/**와 @drawable/** 또는 @color/** 등의 차이 및 용법오늘 데모를 쓰고 주제를 연구할 때 [?attr/colorPrimary]라는 용법을 만났습니다. 하나,?attr/** 이 Google은 '미리 정의된 스타일' 이라고 부릅니다. 글자 그대로 '미리 정의된 스타일' 입...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.