3

그래서, B가 C 애플리케이션 흐름 활동의 A는 한 A-> B-> C방지하는 방법 파편

A, B는 기록 인 기능과 연결되어 만 실행되고 한 번 로그인하십시오. 전체 앱이 C 활동 내에 있습니다. 사용자가 C를 사용할 때 A, B는 살아 있습니다. 모든 것이 잘 작동합니다.

지금 ..

나는 앱의 PID를 죽인다. 그런 다음 작업 관리자에서 선택하십시오.

A가 작동하지 않고 B가 작동하지 않고 C-> onCreate (not null)이 작동합니다.

나는 A 또는 B 인스턴스가 있는지 여부를 확인하여이 상황을 감지 할 수 있습니다. 이제는이 특별한 시나리오가 발생했음을 알게되었으므로 앱을 다시 시작하여 활동 A에 새로 추가하려고합니다.

문제는 onCraete (null이 아닌) 활동 CI의에서 onCreate (null이 아닌)에서

내부의 응용 프로그램을 다시 시작하는

이 같은 수행 활동 B에 다음

if (A==null or B==null) 
finish; 
return; 

같은이 작품 그리고 C와 B가 완성되고 A는 C들의 OnDestroy가 호출되기 전에

조각 & & onCreateView 화재에서 OnCreate ... 그 동안 .. 그러나 를 나타납니다. 나는 C 액티비티에서 많은 파편을 가지고 있기 때문에 앱 크래시가 발생합니다.

내 질문은. 작동 C onCreate (null이 아님) (또는 C onCreate 외부에서도 매니페스트에있는 경우) 동안이 시나리오에서 앱을 다시 시작하는 방법이 있습니까? 그러면 조각 onCreate & onCreateView가 호출되지 않습니까?

P.S. : 매니페스트에서 clearTaskonLaunch를 시도했지만 화면을 일시 중지/다시 시작하더라도 앱이 강제로 다시 시작됩니다.

어떤 제안이라도 도움이 될 것입니다.

답변

0

나는 매우 유사한 시나리오를 가지고 있습니다. 기본 클래스의 OnCreatenull 값을 보내면 조각이 다시로드되지 않습니다. 다음은 기본 Activity 클래스 (C# Xamarin.Android이지만 코드는 이해할 수있을만큼 간단 함)에 대한 코드입니다.

protected override void OnCreate(Bundle savedInstanceState) 
    { 
     if (IsInvalidAppState()) { 
      GoToLoginActivity(); 
      base.OnCreate(null); 
     } else { 
      base.OnCreate(savedInstanceState); 
     } 
    } 

    private void GoToLoginActivity() 
    { 
     var intent = new Intent(Application.Context, typeof(LoginActivity)); 
     intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.NewTask | ActivityFlags.ClearTask); 
     StartActivity(intent); 
    } 

    private bool IsInvalidAppState() 
    { 
     // Figure out if everything is initialized correctly 
    }