2017-09-22 6 views
2

는이 활동을 시작합니다살아 내 활동을 유지)들의 OnDestroy (내 서비스는 사용자와 상호 작용해야하는 경우

Intent i = new Intent(context, Ringer_intent.class); 
i.putExtra("PHONE_NUMBER", phone_number); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 
// TODO: This prevents onDestroy --> why??? 
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 

context.startActivity(i); 

Ringer_intent가 실행되지 않습니다 있는지 확인하기 위해 두 번 나는

추가
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 

그리고 나는 또한

@Override 
public void onNewIntent (Intent intent) { 
} 

내가 내 Ringer_intent 교류를 원하는 내 활동에 추가 그것이 끝나면 사라져가는 성질. 나는 사용자가 그것을 fg로 되돌릴 수 없도록하고 싶다.

@Override 
public void onStop() { Log.i(LOG_TAG, "Ringer_intent.onStop()"); // For Debugging 
    super.onStop(); 
} 

@Override 
public void onDestroy() { Log.i(LOG_TAG, "Ringer_intent.onDestroy()"); // For Debugging 
    super.onDestroy(); 
    Log.e(LOG_TAG, "Still not dead - kill it!"); 
    // Bad idea - it kills my service as well !!! 
    // android.os.Process.killProcess(android.os.Process.myPid()); 
} 

그래서 안드로이드가 호출되는 것을 볼 수 있습니다 그것을 사용하는 방법은/FLAG_ACTIVITY_SINGLE_TOP 오
승 작동하지만 FLAG_ACTIVITY_SINGLE_TOP 내 활동과 BG에 남아 는
...
나는 다음과 같은 추가 모두
내 활동은 여전히 ​​있습니다 ...
어떤 생각이 있으십니까?
감사

참고 : - 당신은 당신이 그것을하고있는 방법 Intent.setFlags()를 호출 할 수 없습니다

+0

귀하의 질문이 매니페스트 게시하시기 바랍니다 :-(이해하고 무엇을 설명하려고하는 것은 매우 어렵다 당신이하고 싶은 일과 명확하지 않은 일 –

+0

또한'Intent.setFlags()'를 당신이하고있는 것처럼 호출 할 수 없다'setFlags()'를 호출하면 플래그를 인자로 덮어 쓴다. 이것은'setFlags()'에 전달된다. 이것은'setFlags()'를 3 번 ​​호출 한 후에 마지막으로'setFlags()'를 호출했을 때 유일하게 설정된 플래그가된다. 'setFlags()'대신에'addFlags()'를 사용하거나'setFlags()'를 한 번 호출하고 모든 플래그를 인자로 넘길 수 있습니다 :'setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIV ITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_SINGLE_TOP) ' –

+0

감사합니다 !! 무슨 실수 :-) David이 설명했듯이 - Intent.setFlags()에 대한 마지막 호출은 FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS을 (를) 취소 했으므로 bg에서 사용자가 내 활동 UI를 계속 사용할 수 있습니다. FLAG_ACTIVITY_SINGLE_TOP (으)로 할 일이 없습니다 .--) 다시 한 번 감사드립니다. – Ori

답변

0

도움이되지 않았다
나는 시도는()들의 OnDestroy부터 끝까지()를 호출합니다. setFlags()을 호출하면 setFlags()에 전달하는 인수로 플래그를 덮어 씁니다. 즉, setFlags() 번을 세 번 호출하면 설정된 마지막 플래그는 마지막 호출에서 지정한 플래그가 setFlags() 인 것을 의미합니다. 대신 setFlags()addFlags()를 사용하거나 한 번 setFlags()를 호출하고 다음과 같이 인수로 플래그을 모두 전달할 수 있습니다 setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_SINGLE_TOP)