方案 - 我沒有將我的應用程序在後臺運行。我有一個爲ACTION_USER_PRESENT實現的接收器。在這種接收機我開始一個活動,其明顯的設置是:當我明確地完成它時,我的活動從最近重新啓動.android
<activity android:name=".activity.MyActivityB"
android:excludeFromRecents="true"
android:noHistory="true"
android:screenOrientation="portrait"/>
這是因爲旗幟在它爲我學分給用戶,我不希望用戶能夠再次重新啓動後才爲同一個橫幅。
我完成暫停時的活動,因爲我想盡快關閉它,只要用戶離開它。
但是,使用Nexus設備時,當我按最近按鈕,然後活動顯示在最近,並再次按下它的活動重新創建。
,但發生的事情是當活動是在前臺和我按下最近通話按鈕,那麼活動要完成,因爲我曾呼籲這一點:
@Override
protected void onPause() {
System.out.println("MyActivityB onpause called ");
super.onPause();
bannerShown = false;
if(!isFinishing())
finish();
}
但活動亙古不被可能結束並重新創建時我再次按最近按鈕。
這不是在三星設備中,而只在具有最近的應用程序按鈕(即方形)的Nexus設備中。
這是因爲活動在Nexus設備上仍然活動(onPause()未被調用)。這些設備上安裝的啓動器就是這個問題。換句話說,您無法識別用戶是否打開最近的菜單。但是,當您從最近的菜單切換應用程序時,它將被調用,因爲該活動現在處於後臺。另外,當應用程序將被中間的按鈕關閉時,活動將在後臺進行。 – Larcado
我檢查日誌暫停和onWindowFocusChanged都被調用,當用戶點擊最近按鈕,但仍然完成後,活動還沒有完成();在它 – beginner