2017-09-22 110 views
2

當我的服務需要與用戶交互啓動的活動:當我使用FLAG_ACTIVITY_SINGLE_TOP - 的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。
這種方式它的工作W/O FLAG_ACTIVITY_SINGLE_TOP
但隨着FLAG_ACTIVITY_SINGLE_TOP我的活動仍然在BG ...
我增加了以下內容:

@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()); 
} 

所以我可以看到,機器人會被調用都
但我的活動仍然存在...
任何想法?
感謝

注:
席力圖召從完成的onDestroy()() - 沒有幫助

+0

你提的問題是非常困難的理解:-(請發表您的清單,並試圖解釋什麼 –

+0

另外,你不能調用'Intent.setFlags()'當你調用'setFlags()'時,它會用參數覆蓋標誌你傳給'setFlags()',這意味着在調用'setFlags()'3次之後,唯一將被設置的標誌將是你在上一次調用'setFlags()'時指定的那個標誌,你可以使用' addFlags()'而不是'setFlags()',或者你可以調用'setFlags()'一次並傳遞所有的標誌作爲參數,如下所示:'setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIV ITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_SINGLE_TOP)' –

+0

謝謝!這是什麼錯誤:-)正如大衛解釋說的 - 我最後一次調用Intent.setFlags()取消了FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS,這就是爲什麼我的活動用戶界面仍然可供用戶在bg中使用。 FLAG_ACTIVITY_SINGLE_TOP沒有任何待辦事項:-)再次感謝。 – Ori

回答

0

你不能叫Intent.setFlags()你正在做的方式。當您致電setFlags()時,它將用您傳遞給setFlags()的參數覆蓋標誌。這意味着在撥打setFlags()三次之後,唯一將被設置的標誌將是您在上次撥打setFlags()時指定的標誌。您可以使用addFlags()代替setFlags(),也可以調用一次setFlags()並通過所有的標誌作爲參數,就像這樣:setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_SINGLE_TOP)

相關問題