0

finish() 메서드는 새 작업을 시작하는 동안 현재 작업을 완료하는 데 사용됩니다. 하지만 아마도 finish() 메서드가 내 AsyncTask 재정의 메서드에서 작동하지 않습니다. 좋아요, 내 현재 활동은 입니다. LoginActivity에서 AsyncTask를 구현했으며 AsyncTask의 재정의 메소드 중 하나에서 LoggedInActivity을 시작합니다. LoggedInActivity에는 많은 조각이 있습니다. 이것은 내가 생각하기에 어떤 문제도 일으키지 않는다. BACK 버튼을 누르면 LoginActivity이됩니다. 나는 그것을 원하지 않는다. 내 코드에서 봐 주시기 바랍니다 :finish() 메서드가 AsyncTask 내부에서 작동하지 않습니다.

public class LoginActivity extends Activity implements OnClickListener { 
    private void startLoggedInActivity() 
    { 
     Intent i = new Intent(this, LoggedInActivity.class); 
     startActivity(i); 
     finish(); 
    } 
    private class FetchProfileTask extends AsyncTask<String, Integer, JSONObject> 
    { 
     protected JSONObject doInBackground(String... strings) { 
      bla....bla.... 
     } 
     protected void onPreExecute() { 
      bla....bla.... 
     } 
     protected void onPostExecute(JSONObject jsonObject) { 
      try { 
       startLoggedInActivity(); 
      } catch (Exception e) { 
       Log.w("Exception", "FetchProfileTask - onPostExecute()"); 
      } finally { 

      } 
     } 
    } 
} 

사람이 나에게 도움이된다면 내가 기뻐할 것입니다 .....

+0

왜하지 행해져 Yout 나는'안드로이드 사용하는 경우 loggenInActivity에게 – elmorabea

+0

@dcharms를 시작한 후 onPostExecute()에서 활동을 마무리하려고 : noHistory = "true"로 '이 ** LoginActivity **부터 시작하는 모든 활동에 적용됩니다. 나는 그것을 원하지 않는다. 일부 특정 활동에 대해 ** LoginActivity **를 마무리하고 싶습니다. –

+0

@MahmoudElmorabea'startLoggedInActivity()'메소드를 살펴 보시기 바랍니다. 나는 현재 활동을 마치기 위해'finish()'를 사용했다. 하지만 왜 작동하지 않는지 모르겠다. –

답변

1

가 매니페스트에 LoginActivity에 android:noHistory="true"를 추가합니다.

다른 활동으로 이동 한 후 활동 스택에 추가되지 않는 활동을 표시합니다. 따라서 뒤로 버튼을 누르면 LoginActivity로 돌아가는 대신 앱을 종료합니다. 이 방법을 사용하면 더 이상 finish() 호출이 필요하지 않습니다.

<activity 
    ... 
    android:noHistory="true"> 
+0

'android : noHistory = "true"'를 사용하면 ** LoginActivity **부터 시작하는 모든 활동에 적용됩니다. 나는 그것을 원하지 않는다. 일부 특정 활동에 대해 ** LoginActivity **를 마무리하고 싶습니다. –

+0

어떤 상황에서 LoginActivity로 돌아가시겠습니까? 내게는 로그 아웃하면 의미가 있습니다. 그러면'startActivity'를 사용하여 LoginActivity를 다시 불러올 수 있습니다. – dharms

+0

아니요 아니요 아니요. 내 앱에서 ** LoginActivity **에서 다양한 활동을 시작해야하며 ** LogActivity ** 만 시작하면 LoginActivity **를 완료해야합니다. ** LoggedInActivity **. –

0

뒤로 버튼은 마지막 활동으로 변경됩니다. 활동이 완료되면 Android에서 다시 만듭니다 (잘 모르겠습니다). 다시 버튼을 다시 쓸 수 있다고 생각합니다.

0
Activity activity; // Instance Variable 

내부에 생성 :

activity = this; 

private void startLoggedInActivity() 
{ 
    Intent i = new Intent(this, LoggedInActivity.class); 
    startActivity(i); 
    activity.finish(); 
} 
+0

코드와 코드가 다른 점은 무엇입니까? –

+0

차이점은 부모 컨텍스트 활동에 대한 activity.finish() 액세스이며이 메서드를 실행하는 것입니다. 그렇지 않으면 runOnUI() 스레드를 사용하여 작업을 완료하여 올바른 스레드에서 작업을 완료해야합니다. 감사합니다 –

+0

@JSanchez'onPostExecute' *는 기본 UI 스레드에서 실행됩니다. 이 코드에는 차이점이 없습니다. – dharms

관련 문제