2012-04-12 77 views
0

我有2活動,AB活動不能停止另一個活動,然後自己

A調用B帶的意圖,並請求碼 -

startActivityForResult(i,123); 

......後來我想停止B,然後本身,所以在AI做

finishActivity(123); 
finish(); // finish itself 

...但B不停!但是,如果我在所有onStop和onDestroy中設置了斷點,並且在調試器中逐步完成,那麼所有功能都可以正常工作,並且兩個活動都會消失。 (這表明一個定時或競爭條件)

但是如果我註釋掉A的結束()...

finishActivity(123); 
// finish(); // finish itself 

B則結束,而是因爲它的結束已經帶走沒有。讓一個活動完成另一個活動,然後完成它自己的正確方法是什麼?

在此先感謝。

+0

如果你開始B的結果,你爲什麼不想讓它結束自己並將結果發回給A?如果你對時間的準確性是正確的,那麼你可以使用runnable和postDelayed來延遲finsh()半秒鐘或者它需要的任何東西 – FoamyGuy 2012-04-12 20:40:37

+0

而不是使用finishActivity(123)從A嘗試保存B實例(不推薦,內存),然後調用B中的方法,它將自行關閉,以便獲得名爲 – L7ColWinters 2012-04-12 20:43:44

+0

的onActivityResult。這適用於Android設備是基於PC的工業過程的遠程控制的工業應用程序。個人電腦上的信息顯示在個人電腦和Android設備上,用戶可以通過任何一種方式與他們交互或解除他們。我正在描述的情況是消息在PC上被處理的位置,因此Android設備需要解除它,無需用戶交互。 – user316117 2012-04-12 21:06:30

回答

3

見,如果這個工程:

finishActivity(123); 
runOnUiThread(new Runnable() { 
    public void run() { 
     finish(); 
    } 
}); 

的原因,我認爲這是我想調用finish()不給finishActivity(123)機會做的事情。通過調用runOnUiThread,對finish()的調用將通過UI消息隊列在下一個循環中進行。

+0

賓果!你達人! – user316117 2012-04-12 21:13:10