programing

launchMode =“singleTask”설정 대 활동 launchMode =“singleTop”설정

kingscode 2021. 1. 18. 08:10
반응형

launchMode =“singleTask”설정 대 활동 launchMode =“singleTop”설정


매우 계층적인 앱 (활동은 League> Team> Position> Player와 유사 함)이 있으므로 singleTop탐색을 합리적으로 유지하고 중복 인스턴스를 방지하기 위해 각 활동 만들었습니다 .

이제 두 번째 앱을 만들고 있으며 singleTask중복 인스턴스를 방지하기 위해 애플리케이션을 선언하도록 제안하는 것을 보았습니다 . 누군가가 각 접근 방식의 장점을 설명하는 데 도움을 줄 수 있습니까?

내 새 앱은 3 개의 조각이있는 활동 일 뿐이며 설정 활동과 FAQ를 추가 할 것입니다.

편집 : 내가 singleTask생각했던 것처럼 내 앱의 중복 인스턴스를 방지하지 않는다는 것을 깨달았습니다 . 이제이를 처리 할 올바른 방법을 찾고 있습니다.


singleTop과 singleTask에 대한 정의가 약간 벗어난 것 같습니다. SingleTop은 중복 인스턴스를 생성 할 수 있습니다. 예를 들어 League> Team> Position> Player를 사용합니다. 플레이어 화면에 리그 화면으로 이동하는 버튼이 있으면 리그> 팀> 포지션> 선수> 리그가됩니다.

singleTask는 활동의 한 인스턴스 만 존재할 수 있음을 보장합니다.


Android 활동 launchMode

4 가지 모드 ...

"표준" "singleTop" "singleTask" "singleInstance"

기본 모드는 "표준"입니다.

모드는 두 그룹으로 나뉩니다. standard 및 singleTop은 한쪽에 있고 singleTask 및 singleInstance는 다른쪽에 있습니다.

standard와 singleTop의 주요 차이점은 표준 활동에 대한 새 인 텐트가 생성 될 때마다 새 인스턴스가 생성된다는 것입니다. singleTop의 경우에도 새 인스턴스가 생성되지만 활동의 인스턴스가 이미 스택의 맨 위에 있으므로 새 인스턴스를 생성하지 않습니다.

실제로 문제는 서버에서 응용 프로그램을 다운로드하고 실행하고 거기에서 열 때 발생합니다. 응용 프로그램을 시작한 후 홈 버튼을 누릅니다. 그런 다음 모든 프로그램을 클릭하고 홈 화면에서 응용 프로그램의 아이콘을 선택합니다. 그런 다음 표준의 경우 다른 활동이 생성되지만 singleTop에서는 새 인스턴스가 생성되지 않습니다.

"singleTask"및 "singleInstance"모드는 한 가지 측면에서만 서로 다릅니다. "singleTask"활동은 다른 활동이 태스크의 일부가되도록 허용합니다. 활동 스택의 루트에 있지만 다른 활동 (필수 "표준"및 "singleTop"활동)은 동일한 작업으로 시작할 수 있습니다. 반면에 "singleInstance"활동은 다른 활동이 태스크의 일부가되도록 허용하지 않습니다. 작업의 유일한 활동입니다. 다른 활동을 시작하면 FLAG_ACTIVITY_NEW_TASK가 인 텐트에있는 것처럼 해당 활동이 다른 작업에 할당됩니다.

http://smartandroidians.blogspot.in/2010/04/activity-launch-mode-in-android.html


여기에서 답을 찾았습니다. http://www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode

"singleTop":

'표준'과의 차이점은 활동 인스턴스가 이미 현재 작업의 맨 위에 있고 시스템이이 활동으로 인 텐트를 라우팅하는 경우 새 인스턴스가 생성되지 않습니다. 이는 새 인스턴스가 생성되는 대신 onNewIntent () 메서드를 실행하기 때문입니다. 새 개체. Twitter-oauth 통합을 예로 들어 보겠습니다.

"singleTask":

새 작업이 항상 생성되고 새 인스턴스가 루트 작업으로 작업에 푸시됩니다. 그러나 작업에 활동 인스턴스가있는 경우 시스템은 onNewIntent () 메서드 호출을 통해 인 텐트를 해당 활동 인스턴스로 라우팅합니다. 이 모드에서는 활동 인스턴스를 동일한 작업으로 푸시 할 수 있습니다. 그리고 사용자가 singleTask 활동에서 BACK 키를 클릭하면 시스템은 사용자를 이전 활동으로 되돌립니다.


활동 시작 모드 이해 에서 :

표준 (기본값) :-액티비티 클래스의 여러 인스턴스를 인스턴스화 할 수 있으며 여러 인스턴스를 동일한 작업 또는 다른 작업에 추가 할 수 있습니다. 이것은 대부분의 활동에 대한 공통 모드입니다.

singleTop :-표준과의 차이점은 활동의 인스턴스가 이미 현재 작업의 맨 위에 있고 시스템이 인 텐트를이 활동으로 라우팅하면 onNewIntent () 메서드를 실행하므로 새 인스턴스가 생성되지 않는다는 것입니다. 새 개체를 만드는 대신.

singleTask :-항상 새 작업이 생성되고 새 인스턴스가 루트로 작업에 푸시됩니다. 그러나 작업에 활동 인스턴스가있는 경우 시스템은 onNewIntent () 메서드 호출을 통해 인 텐트를 해당 활동 인스턴스로 라우팅합니다. 이 모드에서는 활동 인스턴스를 동일한 작업으로 푸시 할 수 있습니다. 이 모드는 진입 점 역할을하는 활동에 유용합니다.

singleInstance :-singleInstance의 동일한 작업에 활동 인스턴스를 푸시 할 수 없다는 점을 제외하면 singleTask와 동일합니다. 따라서 시작 모드가있는 활동은 항상 단일 활동 인스턴스 태스크에 있습니다. 이것은 매우 특수한 모드이며 완전히 하나의 활동으로 구현되는 애플리케이션에서만 사용해야합니다.

참조 URL : https://stackoverflow.com/questions/25773928/setting-launchmode-singletask-vs-setting-activity-launchmode-singletop

반응형