2010-01-25 2 views
15

LogonAct 및 MainAct 2 개의 응용 프로그램이 있습니다. LogonAct는 사용자가 응용 프로그램으로 돌아갈 때마다 사용자가 계속 진행하도록하려는 로그온 활동입니다. LogonAct에 android : clearTaskOnLaunch = "true"을 설정했습니다. 그때이 순서에 따라사용자가 응용 프로그램을 떠날 때 스택 활동을 되돌릴 수있는 방법은 무엇입니까?

Home -> LogonAct -> MainAct -> Home

나는 처음에는 화면이 순서를 통해 이동 응용 프로그램을 시작,

LogonAct -> Back -> MainAct

이 왜 MainAct에 날 다시 가져오고있다 ? LogonAct가 android : clearTaskOnLaunch = "true"을 가지고 있기 때문에 그 활동은 끝나지 않아야합니다. 나는 LogonAct에서 Back 버튼을 눌렀을 때 집으로 돌아갈 것으로 예상된다. 나는 1.5을 사용하고

<activity android:name=".LogonAct" 
      android:clearTaskOnLaunch="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 

    <activity android:name=".MainAct"> 
     <meta-data android:name="android.app.default_searchable" 
        android:value=".SearchResults" /> 
    </activity> 

의 AndroidManifest.xml에서

관련 조각.

도움을 주시면 감사하겠습니다.

+0

당신이 당신의 질문을 편집 할 수 및 Manifest를 추가하거나 최소한 LogonAct의 요소를 추가하십시오. 사람들이 실수를 범하는 데 도움이 될 것입니다. –

+0

AndroidManifest.xml의 스 니펫에는 Dave가 포함되어 있습니다. 나는 질문에 그것들을 포함 시켰어야했지만 나는 그 코드를 내 앞에 두지 않았다. – Adrian

답변

11

android:clearTaskOnLaunch에 대한 문서에서는이 속성이 "[Activity]가 홈 화면에서 다시 시작될 때마다"적용됩니다.

그러나, 귀하의 경우 홈 화면으로 돌아갑니다 버튼을 눌러보다는 돌아 가기 버튼을 눌러 있습니다. 즉, MainAct이 "완료되지"않았기 때문에 응용 프로그램이 실제로 으로 다시 시작되지 않습니다. 그것은 을 누를 때만 발생합니다 (또는 Android가 리소스를 절약하기 위해 작업을 죽이는 경우 등).

응용 프로그램에서 두 가지 작업 만 수행하면 MainActandroid:noHistory 속성을 설정하여 사용자가 절대로 다시 돌아올 수 없도록하고 LogonAct을 통과해야합니다.

제쳐두고, 사용자가 앱에서 내비게이션 할 때마다 (예 : 전화를받을 때) 강제로 사용자를 다시 로그인하도록하는 것은 약간 짜증나는 것처럼 보입니다.
앱의 영구 저장소에 세션 토큰을 보관할 수도 있고, 앱이 작동하는 경우 서비스를 사용하여 네트워크 연결을 열어 놓을 수도 있습니다. — 물론 귀하와 귀하의 요구 사항에 따라 달라질 수 있습니다. :)

+1

크리스토퍼에게 도움을 주셔서 감사합니다. MainAct 다음에 올 수있는 몇 가지 활동이 있으므로 MainAct에서 android : noHistory를 사용하면 Back을 선택하면 이러한 다른 활동이 로그온 화면으로 돌아갑니다. 나는 앱에 올 때마다 로그온하는 것이 이상적이지 않다는 데 전적으로 동의합니다. 그것은 비밀 번호 관리자 애플 리케이션 그래서 나는 그것을 오랫동안 액세스 할 수 있도록하고 싶지 않았어. 내가 시도하고 할 일은 sudo와 비슷한 방식으로 작동하는 타이머를 사용하는 것입니다. 즉, 마지막으로 입력 된 이후 x 초 이상인 경우 암호를 요청하십시오. – Adrian

+3

아. 이 경우 특정 시간주기가 경과했는지 여부를 확인하는 각 Activity의 onResume()에 빠른 메소드 호출을 추가 할 수 있습니다. 그렇다면'finish()'를 호출하고'LogentAct'에 다시 보내기 위해'Intent'를 실행하십시오. –

15

당신은 다음을 수행 할 수 주요 활동
2의 선언에,
1 세트 clearTaskOnLaunch = "true"를 AndroidManifest를에.활동에 그 닫아야합니다 : - 사용자가 다시 aplication을 시작하면 그것은 홈 화면 에 다시 온다 -

@Override 
public void onBackPressed(){ 
    moveTaskToBack(true); 
} 

그렇다면 사용자가 다시 누르면 작업 스택을 지우고 그 주요 활동을 근절하기 위해 오는

+0

감사합니다 muzhig 귀하의 설명을 많이 도와주세요. – amity

+0

감사합니다 muzhig..it 나를 도왔습니다 ... –

관련 문제