2014-11-06 40 views
1

在我的應用程序中,Activity1啓動Activity2與「startActivityForResult()」。完成()在一個活動關閉應用程序,然後簡要顯示以前的應用程序

當活性2完成後,下面的代碼被稱爲:

Activity2.java

private void finishActivity(final boolean accepted) 
{ 
    Intent returnIntent = new Intent(); 

    setResult(accepted ? RESULT_OK : RESULT_CANCELED, returnIntent); 

    finish(); 
} 

活性1收到這個回調,如果結果不RESULT_OK,它也完成。

Activity1.java

@Override 

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == Globals.REQUEST_CODE_TOS) 
    { 
    if (resultCode != RESULT_OK) 
     finish(); 
    } 
} 

活動1完成的應用程序關閉,如預期後。

的問題 -

然而,我的應用程序關閉後,而不是去到主屏幕,在棧簡要以前的應用程序啓動前,則也關閉!然後我進入主屏幕。

在Android bug跟蹤系統,我看到的是按後退按鈕時的情況列出了類似的錯誤,我相信這是與調用完成():

https://code.google.com/p/android/issues/detail?id=71067

我在運行4.4.4的Nexus 5上看到這一點。

這只是一個錯誤?還是有任何行爲的解決方法?

編輯 -

爲了澄清我想要的行爲:

在谷歌地圖,如果你拒絕TOS彈出,應用程序關閉,並直接進入主屏幕。有一些以前打開的應用程序沒有尷尬的閃光。

+0

可能是一個系統錯誤... – StoneBird 2014-11-06 17:26:24

+0

「堆棧上的前一個應用程序暫時啓動,然後關閉!」什麼是'以前的申請'?你的意思是Activity2? – 2014-11-06 17:32:32

+0

@MarcinS。不,我的意思是以前的應用程序 - 例如,在我的頂級活動中調用finish()後,Play Store會短暫彈出並彈出,最後將我帶到主屏幕。 – Alchete 2014-11-06 17:38:19

回答

0

可能是您通過setResult()返回的空意圖。你在這裏嘗試過null嗎?

+0

我剛試過--Null也一樣,但謝謝你的想法。這似乎是一個錯誤... – Alchete 2014-11-06 23:03:21

2

這和one you linked in your question(我一直關注它好幾個月,因爲我自己擁有一個Nexus 5)完全相同。它實際上是fixed in the AOSP,但是這個特殊的修復似乎還沒有找到進入N5的途徑。我的手指越過了棒棒糖,但我們會看到什麼時候推出。

至於解決方法,目前我認爲不存在,但如果我錯了,我很想知道 - 我自己開發一個類似的應用程序(手動調用底部的finish()通過後退按鈕關閉堆棧中的最活動)。

+0

是的,我看到了同樣的確切行爲 - 但谷歌地圖似乎避免了這個陷阱。您可以通過清除Google地圖上的數據進行測試,然後啓動 - 然後拒絕服務條款。地圖關閉乾淨,只是進入主屏幕。 – Alchete 2014-11-06 18:49:07

+0

就這樣。我想知道他們是否可以模擬home按鈕而不是調用'finish()'。我看到了TOS下的常規地圖活動,所以有可能他們這樣做是爲了規避必須完成堆棧中的所有活動。 – Alex 2014-11-06 20:40:14

相關問題