2014-04-03 20 views
0

我有一個運行的應用程序,每秒打印一個數字。現在,如果我按HOME按鈕,這個應用程序將繼續在後臺工作,如果我將通過長時間HOME按鈕返回並按下應用程序,我會看到即使在該應用程序在背景。到現在爲止還挺好。 現在我在這些號碼打印輸出期間以編程方式在我的應用程序中撥打電話。 呼叫窗口打開,號碼正在撥打,現在我正試圖返回到我已經激活的應用程序,我不能,我所能做的就是打開一個新的活動,這將顯示(這意味着所有的打印都被擦除)。 所以我的問題是:而不是使用startActivity(),它會打開一個新的活動,我如何返回到我的活動在後臺?android:如何恢復我的應用程序後,電話被回答

這是我到目前爲止的代碼:

啓動電話,等待1秒,並開始一個新的可運行的(我希望能回到我回):我是否會

Intent intent = new Intent(Intent.ACTION_CALL); 
intent.setData(Uri.parse("tel:"+phone_number.toString().trim())); 
startActivity(intent); 


Runnable showDialogRun = new Runnable() { 
      public void run(){ 
       Intent i = getBaseContext().getPackageManager() 
         .getLaunchIntentForPackage(
           getBaseContext().getPackageName()); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
} 
}; 
Handler h = new Handler(); 
h.postDelayed(showDialogRun, 1000); 

現在移除標誌'FLAG_ACTIVITY_CLEAR_TOP'什麼都不會發生,什麼時候它會去調用窗口的應用程序將不會返回。

+0

另外請記住,即使你的UI流量返回到您的應用程序,Android是沒有義務讓你的程序運行,而別的東西是在前景 - 而不是(如果資源不足),它可能必須殺死你的進程,然後重新啓動你的進程。所以,如果你希望這是可靠的,你應該把時間看作是與系統計時器之一的區別,並將該差異存儲在一個可以在活動死亡和娛樂中倖存的地方。 –

回答

0

不設置新任務標誌

刪除此行

i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

,並設置了android:launchMode = 「singleTop」 的活動清單。所以當你開始這個活動時,現有的活動實例會被帶到最前面。

android:launchMode="singleTop" 
+0

已經嘗試過。 'singleTop'沒有任何事情發生,只有當電話結束時,電話纔會回到應用程序。 – user3250080

相關問題