2017-02-13 13 views
1

start 활동을 호출하여 새 활동을 시작했습니다. 그러나 작업이 시작된 후 onNewIntent 메서드에서 finish()은 호출되지 않습니다. !! WebActivity.javaonNewIntent가 호출되지 않습니다.

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    setIntent(intent); 
    if (intent.getStringExtra("url") != null) { 
     Intent intent1 = new Intent(getBaseContext(), WebActivity.class); 
     intent1.putExtra("url",intent.getStringExtra("url")); 
     startActivity(intent1); 
     finish(); 
    } 
} 
+1

그냥 setIntent (의도)를 제거하십시오; 이는 현재 활동 의도를 저장하여 동일한 활동으로 되돌아 오기 때문입니다. 자세한 내용은 [이 링크] (http://stackoverflow.com/questions/7748392/is-there-any-reason-not-to-call-setintent-when-overriding-onnewintent)를 확인하십시오. –

답변

1

이것은 onNewIntent가 호출되지 않기 때문입니다!

이 액티비티가 호출되는 위치에이 값을 넣습니다.

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

다음은 매력처럼 작동합니다.

새로운 활동이 호출 되었기 때문입니다. 그리고 FLAG_ACTIVITY_SINGLE_TOPonNewIntent이 호출되도록합니다. 이 FLAG_ACTIVITY_SINGLE_TOP은 새로운 활동을 시작하지 않습니다.

+0

글을 참고하시기 바랍니다. 'FLAG_ACTIVITY_NO_HISTORY'로 시도 했습니까? –

1

참고 처음

디버그원치 않는 선 아래을 제거

super.onNewIntent(intent); 
setIntent(intent); 

전화 finish()

Intent intent1 = new Intent(getBaseContext(), WebActivity.class); 
intent1.putExtra("url",intent.getStringExtra("url")); 
finish(); 
startActivity(intent1) 

의도 내에서 당신은 또한 FLAG_ACTIVITY_NO_HISTORY으로 시도 할 수 있습니다.

설정하면 새로운 활동이 기록 스택에 보관되지 않습니다. 사용자가 멀리 이동하면 활동이 완료됩니다. NoHistory 속성을 사용하여 을 설정할 수도 있습니다.

+1

@CoDfather 'finish()'가 먼저 호출되면 https : //developer.android.com/reference/android/app/Activity.html – Akshay

+1

공식 라이프 사이클을 이해하는 공식 문서를 참조하십시오. startActivity (intent1)'?? –

+0

그 이유는'FLAG_ACTIVITY_NO_HISTORY ' –

0

Android에서 검색 구현에 onNewIntent을 사용하고있었습니다. 에뮬레이터에서 키보드의 Go 버튼을 사용할 때 onNewIntent이 호출되지 않는 문제를 보았습니다. 나는 onCreate 메서드에 의도를 처리하기위한 코드를 배치하여이 문제를 해결했습니다. 이는 활동의 새 인스턴스가 시작될 때 의도 활동이 처리되도록하기 위해 수행해야합니다.

활동이 이전 상태에서 복원 될 때마다 onCreate이 호출되므로 문제가 발생합니다. 따라서 방향 변경이 발생하더라도 의도 처리 메소드가 호출됩니다.

해결 방법 : if (savedInstanceState==null)을 사용하여 활동이 이전 상태에서 복원되고 있는지 또는 새로운 검색인지 확인하십시오.