다시 시작하지 않고 앱을 다시 시작


195

누군가가 해결책이 아니라면 적어도 행동에 대한 설명을 알아낼 수 있기를 바랍니다.

문제 :

일부 장치에서는 실행기 아이콘을 누르면 현재 작업이 다시 시작되고 다른 장치에서는 초기 실행 의도가 발생합니다 (효과적으로 앱을 다시 시작). 왜 이런 일이 발생합니까?

세부 사항 :

"런처 아이콘"을 누르면 앱이 정상적으로 시작됩니다. 즉, 첫 번째 이름 Activity과 동작 android.intent.action.MAIN및 카테고리로 인 텐트가 시작된다고 가정 합니다 android.intent.category.LAUNCHER. 그러나 항상 그런 것은 아닙니다.

앱 후 실행 아이콘이 이미 실행중인 누르면 기기의 대부분에서, 그 과정에서 현재 실행중인 활동 (재개 NOT 초기 Activity). OS 메뉴의 "최근 작업"에서 선택한 것과 같은 방식으로 재개됩니다. 이것은 모든 장치에서 원하는 동작 입니다.

그러나 선택한 다른 장치에서는 다른 동작이 발생합니다.

  • Motorola Xoom에서 실행기 아이콘을 누르면 현재 실행중인 항목에 관계없이 앱이 항상 초기 시작을 시작합니다 Activity. 런처 아이콘은 항상 "LAUNCHER"의도를 시작한다고 가정합니다.

  • Samsung Tab 2에서 런처 아이콘을 누르면 앱을 방금 설치 한 경우 항상 초기 Activity(Xoom과 동일)가 시작되지만 설치 후 장치를 다시 시작하면 런처 아이콘이 대신 표시됩니다 앱을 다시 시작하십시오. 이 장치가 "설치된 앱"을 장치 시작시 조회 테이블에 추가하여 실행기 아이콘이 작업 실행을 올바르게 재개 할 수 있다고 가정합니까?

내 문제와 비슷한 소리로 많은 답변을 읽었 지만 단순히 추가 android:alwaysRetainTaskState="true"하거나 사용 launchMode="singleTop"하는 Activity것이 답이 아닙니다.

편집하다:

이 앱이 가장 최근에 출시 된 후 처음 다시 시작한 후 모든 기기 에서이 동작이 발생하기 시작했습니다 . 나에게 미친 것처럼 보이지만 다시 시작 프로세스를 살펴보면 실제로 무엇이 잘못되었는지 찾을 수 없습니다.


1
이것은 사소한 질문처럼 보이지만 Xoom의 개발 옵션에서 "활동을 유지하지 마십시오"를 true로 설정 했습니까?
Andrew Schuster

Nope (I wish! :))-백그라운드에서 각 활동 및 활동의 수명주기를 여전히 사용 가능한 것으로 기록했습니다 (중지되지 않았습니다). OS는 다시 finish()시작하는 Activity대신 다시 처음 시작하는 인스턴스에서 호출 하는 것 같습니다 .
Graeme

1
홈 버튼을 누른 다음 실행기 아이콘을 클릭하면 재개 동작이 안드로이드의 기본값입니다. 그러나 뒤로 버튼을 눌러 홈 화면으로 돌아 가면 대부분의 휴대 전화가 앱을 종료합니다. 앱을 종료하는 데 사용하는 방법이 장치마다 다를 수 있습니까? 일부 하드 / 소프 키를 이상하게 처리하지 않는지 확인하기 위해 onKeyUpEvent를 로그 아웃 할 수 있습니까?
Nick Cardoso

2
아니요-위에서 언급 한 문제가 확실합니다. 집을 사용하여 앱을 백그라운드에 배치하십시오 (뒤로가 아니라면 액티비티를 마칠 수 있습니다). Xoom에서 작업 목록 (실행기가 아닌)에서 앱을 다시 시작할 수 있으므로 백 스택이 확실히 종료 되지 않았습니다.
Graeme

1
현상금으로 답변하면 질문에 설명 된 문제를 해결할 수 있습니다. 때로는 자신의 답변에 언급 된 것처럼 실행기의 응용 프로그램 버그로 인해 문제가 발생하지만 내 특정 문제는 작업 전환으로 인해 내 자신의 대답을 "정확한"으로 표시했습니다. 두 문제에 대한 해결책은 그의 해결책으로 해결되었습니다.
Graeme

답변:


238

발생한 동작은 API 1 이후 일부 Android 런처에서 발생하는 문제로 인해 발생합니다. https://code.google.com/p/android/issues/ 에서 버그 및 가능한 솔루션에 대한 세부 사항을 찾을 수 있습니다. detail? id = 2373 입니다.

사용자 정의 실행기 / 스킨을 사용하는 다른 제조업체뿐만 아니라 삼성 기기에서도 비교적 일반적인 문제입니다. 주식 Android 런처에서 문제가 발생하는 것을 보지 못했습니다.

기본적으로 앱은 실제로 완전히 다시 시작되지 않지만 실행 프로그램이 앱을 다시 시작하면 시작 활동이 시작되어 활동 스택의 맨 위에 추가됩니다. 앱을 다시 시작하고 시작 활동이 표시 될 때 뒤로 단추를 클릭하여이 경우를 확인할 수 있습니다. 그런 다음 앱을 다시 시작할 때 표시 될 것으로 예상되는 활동으로 이동해야합니다.

이 문제를 해결하기 위해 구현하기로 선택한 해결 방법은 초기 활동을 시작하려는 의도에서 Intent.CATEGORY_LAUNCHER 범주 및 Intent.ACTION_MAIN 작업을 확인하는 것입니다. 이 두 플래그가 있고 활동이 작업의 루트에 있지 않은 경우 (앱이 이미 실행 중임을 의미) 초기 활동에서 finish ()를 호출합니다. 그 정확한 해결책은 당신에게 효과가 없을 수도 있지만 비슷한 것이 있어야합니다.

초기 / 시작 활동의 onCreate ()에서 수행하는 작업은 다음과 같습니다.

    if (!isTaskRoot()
            && getIntent().hasCategory(Intent.CATEGORY_LAUNCHER)
            && getIntent().getAction() != null
            && getIntent().getAction().equals(Intent.ACTION_MAIN)) {

        finish();
        return;
    }

4
지금까지 이것은 부작용이 없어 지금까지 효과적입니다. 논리적 인 가정에 근거하여 그것이 유효하지 않은 이유는 없습니다.
javahead76

3
나는 이것이이 버그를 처리하는 적절한 방법이라고 생각합니다. 나를 위해 작동합니다.
Sokolov

3
약 8 개의 다른 장치에서 검증 된 작업을 수행했습니다. 매우 감사합니다!
shaya ajzner

3
WOOOOOW는 지난 2 시간 동안의 문제를 해결하기 위해 내 문제를 수정했습니다
Jean Raymond Daher

2
감사합니다 @ starkej2. 매력처럼 일했다.
Rajeev Sahu

55

이 질문은 2016 년에도 여전히 관련이 있습니다. 오늘 QA 테스터는 Android M 의 주식 런처 에서 다시 시작하지 않고 내 앱이 다시 시작되는 것으로보고했습니다 .

실제로 시스템은 시작된 활동을 현재 작업 스택 에 추가했지만 다시 시작이 발생하여 작업을 잃은 것처럼 사용자에게 표시 되었습니다. 순서는 다음과 같습니다.

  1. Play 스토어 (또는 사이드로드 APK)에서 다운로드
  2. Play 스토어 대화 상자에서 앱 실행 : 활동 A가 나타납니다. [작업 스택 : A]
  3. 활동 B로 이동 [작업 스택 : A-> B]
  4. '홈'버튼을 누르십시오
  5. 앱 드로어에서 앱 시작 : 활동 A가 나타납니다! [작업 스택 : A-> B-> A] (사용자는 '뒤로'버튼을 눌러 여기에서 활동 'B'로 이동할 수 있음)

참고 :이 문제는 ADB를 통해 배포 된 디버그 APK의 경우 Play 스토어에서 다운로드하거나 사이드로드 된 APK에서만 나타납니다. 후자의 경우 5 단계의 실행 의도 Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT에는 디버그 경우가 아닌 플래그가 포함되어 있습니다. 런처에서 앱을 콜드 스타트하면 문제가 사라집니다. 내 의심은 작업이 완전히 지워질 때까지 올바른 시작 동작을 방해하는 잘못된 (더 정확하게, 비표준) 의도로 작업이 시드되었다는 것입니다.

다양한 활동 시작 모드를 시도 했지만 이러한 설정은 사용자가 기대하는 표준 동작과 너무 다릅니다. 활동 B에서 작업을 다시 시작하십시오 . 페이지 하단의 작업 및 백 스택 안내서 에서 예상되는 동작에 대한 다음 정의를 참조하십시오. '작업 시작'에서 :

이러한 종류의 인 텐트 필터를 사용하면 활동에 대한 아이콘 및 레이블이 애플리케이션 실행기에 표시되어 사용자에게 활동을 시작하고 실행 후 언제라도 작성된 태스크로 돌아갈 수있는 방법을 제공합니다.

이 답변 이 관련성 있음을 발견 하고 사용자가 응용 프로그램을 열 때 적절하게 재개되도록 루트 활동 (A)의 'onCreate'메서드에 다음을 삽입했습니다.

                    /**
     * Ensure the application resumes whatever task the user was performing the last time
     * they opened the app from the launcher. It would be preferable to configure this
     * behavior in  AndroidMananifest.xml activity settings, but those settings cause drastic
     * undesirable changes to the way the app opens: singleTask closes ALL other activities
     * in the task every time and alwaysRetainTaskState doesn't cover this case, incredibly.
     *
     * The problem happens when the user first installs and opens the app from
     * the play store or sideloaded apk (not via ADB). On this first run, if the user opens
     * activity B from activity A, presses 'home' and then navigates back to the app via the
     * launcher, they'd expect to see activity B. Instead they're shown activity A.
     *
     * The best solution is to close this activity if it isn't the task root.
     *
     */

    if (!isTaskRoot()) {
        finish();
        return;
    }

업데이트 : 활동이 작업의 루트에 직접있는 경우이 솔루션을 구문 분석 의도 플래그에서 쿼리로 이동했습니다. 인 텐트 플래그는 MAIN 액티비티 (가정에서 시작, '위로'버튼에서 시작, Play Store에서 시작 등)를 여는 다양한 방법으로 예측하고 테스트하기가 어렵습니다.


4
"앱이 실행기에서 콜드 스타트되면 문제가 사라집니다." 이것은 가장 기묘한 부분이며, 처음 실행 한 후 앱을 종료하면 정상적으로 작동하기 시작합니다. 그런 이상한 버그. 철저히 분석하고 솔루션을 주셔서 감사합니다.
Oded

11
참고 : Android Studio를 통해 APK를 설치 한 경우에도 앱의 Google Play 페이지에서 "열기"를 사용하여 처음 설명한 후에 (설명한대로 "콜드 스타트"함으로써) 문제를 다시 재현 할 수 있습니다 . 수정 사항이 제대로 작동하는지 확인하는 데 매우 유용한 것으로 나타났습니다.
Oded

좋은 설명!
karanatwal.github.io

설명 해 주셔서 감사합니다 :)
AndroidEnthastast

2
이것은 많은 앱에서 발생합니다. Google 포토는 내가 테스트 한 주요 사진입니다.
Raghubansh Mani

19

아하! (tldr; 맨 아래에 굵게 표시된 설명을 참조하십시오)

문제를 찾았습니다.

이제 가정을 시작하겠습니다. 런처를 누르면 기본값이 시작 Activity되거나 Task이전 런치에서 시작된 것이 열려 있으면 맨 앞으로 가져옵니다. 다른 방법을 넣어 - 탐색의 모든 단계에서 새 작성하는 경우 Taskfinish기존 하나를 런처는 이제 더 이상 응용 프로그램을 다시 시작하지 않습니다.

그 가정이 사실이라면, 각각 Task이 동일한 프로세스에 있고 첫 번째로 생성 된 이력서 후보와 마찬가지로 유효한 버그라고 생각합니다 .

내 문제는 다음 두 플래그 에서이 플래그를 제거하여 수정되었습니다 Intents.

i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK );

FLAG_ACTIVITY_NEW_TASK새로운 것이 새롭다 는 것은 분명하지만 Task위의 가정이 효과적이라는 것을 이해하지 못했습니다. 나는 이것을 범인으로 간주하고 테스트하기 위해 그것을 제거했지만 여전히 문제가 있었으므로 해산했습니다. 그러나 여전히 아래 조건이 있습니다.

i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)

스플래시 화면이 Activity위의 플래그를 사용하여 앱에서 "메인" 을 시작했습니다 . 결국, 내 앱을 "다시 시작" Activity했는데도 여전히 실행 중이라면 상태 정보를 보존하는 것이 좋습니다.

설명서 에서 새로 시작하는 것에 대한 언급이 없음을 알 수 있습니다 Task.

설정된 경우 시작중인 활동이 현재 작업에서 이미 실행 중이면 해당 활동의 새 인스턴스를 시작하는 대신 그 위에있는 다른 모든 활동이 닫히고이 의도는 (현재 맨 위) 새로운 의도로서의 오래된 활동.

예를 들어, 활동 A, B, C, D로 구성된 작업을 고려하십시오. D가 활동 B의 구성 요소로 해석되는 Intent와 함께 startActivity ()를 호출하면 C와 D가 완료되고 B는 주어진 Intent를 수신합니다. 스택의 결과는 A, B입니다.

위 예제에서 현재 실행중인 활동 B의 인스턴스는 onNewIntent () 메소드에서 여기서 시작중인 새 의도를 수신하거나 새 의도로 완료 및 재시작됩니다. 시작 모드를 "다중"(기본값)으로 선언하고 동일한 의도로 FLAG_ACTIVITY_SINGLE_TOP을 설정하지 않은 경우 완료되어 다시 작성됩니다. 다른 모든 시작 모드 또는 FLAG_ACTIVITY_SINGLE_TOP이 설정된 경우이 인 텐트는 현재 인스턴스의 onNewIntent ()로 전달됩니다.

이 시작 모드는 FLAG_ACTIVITY_NEW_TASK와 함께 효과적으로 사용할 수도 있습니다. 작업의 루트 활동을 시작하는 데 사용되는 경우 현재 실행중인 해당 작업 인스턴스를 포 그라운드로 가져온 다음 루트 상태로 지 웁니다. 예를 들어 알림 관리자에서 활동을 시작할 때 특히 유용합니다.

그래서 아래에 설명 된 상황이있었습니다.

  • A출시 B와 함께 FLAG_ACTIVITY_CLEAR_TOP, A완료.
  • B서비스를 다시 시작하려고하므로 A서비스 다시 시작 논리 및 UI (플래그 없음)가있는 사용자를 보냅니다 .
  • ABFLAG_ACTIVITY_CLEAR_TOP (으)로 시작 하여 A완료됩니다.

이 단계 에서 작업 스택에있는 두 번째 FLAG_ACTIVITY_CLEAR_TOP플래그가 다시 시작 B됩니다. 나는 이것이 이것을 파괴하고 Task새로운 것을 시작 해야 내 문제를 일으킨다 고 가정 하고 있습니다.

따라서 모든 가정이 올바른 경우 :

  • Launcher단지 처음에 만든 작업을 다시 시작
  • FLAG_ACTIVITY_CLEAR_TOP유일하게 나머지를 다시 시작하면 Activity새도 다시 만듭니다.Task

FLAG_ACTIVITY_CLEAR_TOP은 새 작업을 만들거나 시작하려는 활동이 유일한 활동 인 경우 다시 시작하지 않습니다. "설정되고 실행중인 활동이 현재 작업에서 이미 실행 중이면 해당 활동의 새 인스턴스를 시작하는 대신 해당 활동의 다른 모든 활동이 닫히고이 의도는 (현재 새로운 의도로 오래된 활동. "
starkej2

2
나는 그것이 의도 된 것이 아니라는 것을 알고 있습니다. 그러나 시행 착오를 통해 이것이 내 경우에 해당됩니다. 이 플래그를 제거하면 문제가 해결됩니다.
Graeme

모든 조건에서 모든 장치에서 완벽한 이력서를 만들지는 않습니다.
danny117

깃발을 제거하면 문제가 해결되었습니다. 감사합니다
Sealer_05

스플래시 화면 / 메인 화면 시나리오가 있지만 스플래시에서 메인으로 전환하는 데 플래그를 사용하지 않지만 여전히 문제가 재현됩니다.이 솔루션은 나에게 작동하지 않습니다.
ror

12

나는 삼성 장치에서 같은 문제가있었습니다. 많이 검색 한 후에도 이러한 답변 중 어느 것도 효과가 없었습니다. AndroidManifest.xml 파일에서 ( ) launchMode로 설정되어 있음을 발견했습니다 . 속성을 제거하면 문제가 해결되었습니다.singleInstanceandroid:launchMode="singleInstance"launchMode


실제로 이것은 나에게도 속임수였습니다. 다른 SO 질문 에서이 답변이 도움이된다는 것을 알았습니다 : stackoverflow.com/a/21622266/293280 . 그리고 이것은 다른 유형의 launchMode가치 를 기록 합니다 : inthecheesefactory.com/blog/…
Joshua Pinter

이 수정은 나를 위해 일했다! 매니페스트가 아니라 기본 활동 클래스의 활동 속성에 이것을 추가했습니다.
Calin Vlasin

@CalinVlasin 정확히 launchMode를 어떻게 사용했는지 보여줄 수 있습니까? 어디에 두었습니까? 현재 나는 이것을 좋아하지만 그 문제를 일으킨다 : <activity android : name = ". UI.landing.MyActivity"android : configChanges = "locale | layoutDirection"android : launchMode = "singleTop"android : windowSoftInputMode = "stateAlwaysHidden | adjustResize ">
j2emanue

이것은 나의 문제이기도했다. 나는 이것이 받아 들여진 대답과 함께 사용해야한다고 생각합니다 (! isTaskRoot ...
behelit

1

내 Cat s60에서 개발자 옵션에서 "활동을 유지하지 마십시오"를 활성화했습니다.이 기능을 다시 비활성화하면 앱 상태를 잃지 않고 앱을 전환 할 수 있습니다 ...


어떻게해야할지 모르겠지만 이것이 내 장치에서 켜져있었습니다.
realPro

0

이 솔루션은 저에게 효과적이었습니다.

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Intent startMain = new Intent(Intent.ACTION_MAIN);
            startMain.addCategory(Intent.CATEGORY_HOME);
            startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(startMain);
            return false;
        }
        else
            return super.onKeyUp(keyCode, event);
    }

신용 : 뒤로 버튼 클릭시 안드로이드 응용 프로그램을 최소화해야합니다

일부 기기에서는 작동하지 않지만 뒤로 버튼을 누를 때 홈 버튼 동작이 성공적으로 생성되어 종료하지 않고 활동이 중지됩니다.


재미있는 트릭이지만 언급 된 문제를 해결하지 못합니다. 다른 문제 / 질문에 매우 유용합니다.
Graeme

뒤로 버튼은 특정 목적을 가지고 있으며 사용자는 뒤로 버튼이 예상대로 작동 할 것으로 예상합니다. 어떤 식 으로든 그것을 재정의하는 것은 잘못이며 내 의견으로는 매우 전문적이지 않습니다.
버그는

-1

나는 같은 문제가 있었는데 그 원인은 다음과 같습니다.

(MainActivity의 코 틀린 코드)

override fun onBackPressed() {
    finish()
}

따라서 LoginActivity에서 MainActivity로 이동할 때 다음을 사용합니다.

    val intent = Intent(this, MainActivity::class.java)
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    startActivity(intent)

이 플래그를 사용할 때 MainActivity에 onBackPressed ()없어도 다시 클릭 할 때 앱이 자연스럽게 종료됩니다. 그리고 홈 버튼을 누르고 앱으로 돌아 가면 다시 시작되지 않습니다.


-2

안드로이드 폰에서 프로그래밍 하고이 문제를 경험하지 못하는 사람들을위한 솔루션. 이것은 주로 안드로이드 버전 (내 가정 만)의 업그레이드로 인해 발생합니다. 업그레이드 후 모든 앱은 배터리를 덜 사용하도록 최적화됩니다. 그러나 이로 인해 기기 속도가 느려집니다.

해결하는 방법

설정 >> 앱 >> 앱 설정으로 이동합니다 (화면의 아무 곳에서나 설정 기호 찾기-기기마다 다름) >> 배터리 최적화 (또는 유사한 옵티 [여기에 이미지 설명 입력] [1] on) >> 전체 이동 앱이 '최적화되지 않은'상태로 전환됩니다 (일부 1 회 수동으로 수행해야 함-일부 휴대 전화에서는 허용 / 금지 될 수 있음). 런처 앱은 '최적화되지 않아야합니다'(제 경우에는 젠 UI 런처-이것이 범인입니다-시간이 있으면 다른 앱을 최적화 / 최적화하지 않고 다시 시작할 수 있습니다). 이제 전화를 다시 시작하십시오. (데이터 / 안전 모드 또는 문제를 재설정 할 필요가 없음)

지금 멀티 태스킹을 시도하십시오. :) 런처 아이콘을 누르면 현재 작업이 재개됩니다. :) 당신의 장치가 될 것입니다 배터리에 대해 걱정하지 마십시오, 그것은 어쨌든 방전됩니다.


-8

사용자에게 귀중한 정보. 최근에 사용한 앱 목록에서 몇 주 동안 앉아도 완벽한 이력서가 있습니다.

그것은 사용자에게 이력서처럼 보이지만 실제로는 완전히 시작되었습니다.

배경 : 작업을 시작하지 않은 주요 활동에있는 앱이 사용하는 메모리는 쉽게 회수 할 수 있습니다. os는 onCreate로 전달 된 원래 번들로 앱을 다시 시작할 수 있습니다. 그러나 원래 번들을 추가 onSaveInstanceState하여 OS에서 앱을 다시 시작할 때 인스턴스 상태를 복원 할 수 있으며 앱을 다시 시작했는지 또는 다시 시작했는지에 대해 더 현명한 사람은 없습니다. 고전적인지도 프로그램을 예로 들어 보자. 사용자는지도상의 위치로 이동 한 다음 홈 키를 누릅니다. 2 주 후에이 매핑 앱은 여전히 ​​페이스 북, 판도라 및 캔디 크러쉬와 함께 최신 앱 목록에 있습니다. OS는 최근에 사용한 앱의 앱 이름 만 저장하는 것이 아니라 앱을 시작하는 데 사용 된 원래 번들도 저장합니다. 그러나 프로그래머는onSaveInstanceState orignal 번들에 앱을 구성하는 데 필요한 모든 자료와 정보가 포함되어 다시 시작된 것처럼 보입니다.

예 : 앱이 언로드되어 최근 앱 목록에서 몇 주 후에 다시 시작해야하는 경우를 대비하여 onSaveInstanceState에 현재 카메라 위치를 저장합니다.

@Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        // save the current camera position;
        if (mMap != null) {
            savedInstanceState.putParcelable(CAMERA_POSITION,
                    mMap.getCameraPosition());
        }
    }



@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // get the exact camera position if the app was unloaded.
        if (savedInstanceState != null) {
            // get the current camera position;
            currentCameraPosition = savedInstanceState
                    .getParcelable(CAMERA_POSITION);
        }

참고 :onRestoreInstanceState방법 을 사용할 수도 있지만에서 인스턴스를 복원하는 것이 더 쉽다는 것을 알았습니다 onCreate.

이것은 앱에서 일어나고있는 것 이상의 가능성이 있습니다. 일부 기기에서는 메모리를 확보하기 위해 앱이 언로드됩니다. 예, 도움이되는 몇 가지 플래그가 있지만 플래그가 앱의 모든 뉘앙스를 포착하지는 않으며 플래그는 원하는 onSaveInstanceState대로 몇 주 동안 살아있게하지 않습니다 . 완벽한 2 주 후 이력서를 코딩해야합니다. 복잡한 앱에서는 쉬운 일이 아니지만 우리는 당신 뒤에 있고 도와 드리겠습니다.

행운을 빕니다


일반적인 메모리 문제 나 기본 "일시 중지 상태"조건이 아닙니다. 많은 장치에서 메모리를 많이 사용하는 일부 장치에서 내 앱을 사용해 보았습니다.
Graeme

나는 당신이 onPause에 지속적인 데이터를 저장하는 이유 나는 매일 사용하는 전화에서 2 주까지 재개하기 위해 내 앱을 시도했으며 2 주 후에 onCreate 메소드가 호출되고 os가 내가 저장 한 번들에서 전달된다고 알려줍니다 onSaveSessionState 및 번들의 데이터를 사용하여 내 활동을 그대로 두었습니다. 내 대답 이후 3 일이 지났으므로 2 주 동안 시험을 완료 할 수있는 방법이 없습니다. 요약 : 앱은 백그라운드에서 언제든지 종료 할 수 있습니다.
danny117

@ danny117 Graeme이 겪고있는 문제를 정확하게 이해하지 못했다고 생각합니다.
starkej2

Graeme의 문제를 이해합니다. 일부 장치에서 앱을 다시 시작하면 onCreate가 호출됩니다. 화면을 회전시키기 위해 앱을 종료시키는 HTC EVO (Gingerbread)와 정확히 같습니다. onCreate developer.android.com/reference/android/app/…
danny117

@ danny117 맞습니다. 그러나 그가 겪고있는 문제는 앱이 재개 될 때 (예상되는) 재개되는 단일 활동과 관련이 없지만 잘못된 활동이 시작되고 있습니다.
starkej2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.