[android] 활동을 전경 (스택 맨 위)으로 가져 오는 방법은 무엇입니까?

Android에서는 ExampleActivity 활동을 정의했습니다.

내 응용 프로그램이 시작되었을 때이 A-Activity의 인스턴스가 생성되었습니다 A. 사용자가에서 버튼을 클릭하면 AB-Activity의 또 다른 인스턴스 인 B가 생성되었습니다. 이제 작업 스택은 BA이고 맨 위에 B가 있습니다. 그런 다음 사용자가 B의 버튼을 클릭하면 C-Activity의 또 다른 인스턴스가 생성됩니다. 이제 작업 스택은 CBA이며 맨 위에 C가 있습니다.

이제 사용자가 C의 버튼을 클릭하면 애플리케이션이 A를 포 그라운드로 가져 오길 원합니다. 즉, A가 작업 스택 인 ACB의 맨 위에 있도록합니다.

코드를 작성하면 어떻게됩니까?



답변

이것을 시도해 볼 수 있습니다 FLAG_ACTIVITY_REORDER_TO_FRONT(문서는 당신이 원하는 것을 정확하게 설명합니다)


답변

이 작업을 수행하는 가장 좋은 방법은 Android 홈 화면에서 사용하는 것과 동일한 인 텐트 인 앱 런처를 사용하는 것입니다.

예를 들면 :

Intent i = new Intent(this, MyMainActivity.class);
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);

이렇게하면 사용자가 가장 최근에 사용한 패키지의 모든 활동이 다시 맨 앞으로 돌아옵니다. 이 기능은 내 서비스의 PendingIntent를 사용하여 사용자를 내 앱으로 되돌릴 때 유용하다는 것을 알았습니다.


답변

다음은이를 수행하는 방법에 대한 코드 예제입니다.

Intent intent = getIntent(getApplicationContext(), A.class)

이렇게하면 스택에 활동의 인스턴스가 하나만 있습니다.

private static Intent getIntent(Context context, Class<?> cls) {
    Intent intent = new Intent(context, cls);
    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    return intent;
}


답변

FLAG_ACTIVITY_REORDER_TO_FRONT : Context.startActivity ()에 전달 된 Intent에 설정된 경우이 플래그는 시작된 활동이 이미 실행중인 경우 작업의 기록 스택 맨 앞으로 가져 오도록합니다.

Intent i = new Intent(context, AActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);


답변

Intent플래그 조합이 트릭을해야한다고 생각합니다. 특히, Intent.FLAG_ACTIVITY_CLEAR_TOP하고 Intent.FLAG_ACTIVITY_NEW_TASK.

을 호출하기 전에 이러한 플래그를 인 텐트에 추가하세요 startActvity.


답변

i.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);

참고 홈 활동 시작 모드는 single_task 여야합니다.


답변

일반적으로이 활동 관리 방법은 권장되지 않는다고 생각합니다. The Stack에서 두 단계 아래로 활동을 재 활성화하는 문제는이 활동이 종료되었을 가능성이 있다는 것입니다. 귀하의 활동 상태를 기억하고 다음으로 시작하라는 조언startActivity ()

이 페이지를 보셨을 것 같지만 편의를 위해이 링크