2014-09-23 74 views
1

我在端口上有一個UDP套接字的活動。如果我按Home鍵的活動去的背景下,的onPause()調用OnStop()方法被調用。現在我想在收到一些UDP數據包時恢復我的活動。 閱讀其他職位我明白,我必須:Android:恢復單個任務活動

  1. 申報活動爲android:launchMode="singleTask"(或singleInstance
  2. 然後,當我想恢復活動:
 
Intent intent = new Intent(this.getApplicationContext(), myActivity.class); 

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 

startActivity(intent); 

該解決方案不適合我。撥打startActivity(intent)不會顯示我在前臺的活動,並且onResume()未被調用。

以下標誌做的工作,但我不想明確任務,並重新啓動一個新的。

 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
+0

你的UDP套接字是一種服務,對不對? – njzk2 2014-09-23 16:24:06

+0

主活動關閉時,套接字處於服務狀態。當我創建主要活動時,套接字在服務中被解除綁定,主要活動綁定它。 – peregrinus 2014-09-24 18:29:29

回答

0

爲了使自己的任務到前臺,你需要調用startActivity()在非活動上下文,例如:

getApplicationContext().startActivity(intent); 

而且,你不需要使用任何特殊啓動模式(singleTasksingleInstance)可以使其工作。

這是一個Android錯誤,固定在Android 4.4的。由於這個問題是從2014年開始的,我會假定OP看到這個問題。

How to resume Android Activity programmatically from background和評論跟帖。