2012-09-28 24 views
0
刷新活動

我的服務目前聽電話,然後通過startActivity開始一個活動:開始以後只能從服務

Intent intent = new Intent(context, CallMonitor.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
intent.putExtra("call", call); 
startActivity(intent); 

所以,當服務接收更多的電話,更多的活動將啓動。

但我希望該服務只啓動一項活動。下一次它應該將呼叫發送到已經開始的活動。活動會自行更新。

什麼是最好的方法?

亞歷山大Miehlke,柏林

回答

2

你應該使用intent.addFlags(intent.FLAG_ACTIVITY_REORDER_TO_FRONT)將調用已經開始活動,並把它帶回了前面。在那個活動中你應該重寫onResume()方法。並根據您傳遞的意圖更新該活動,您應該重寫onNewIntent()方法以設置新接收的意圖。例如,

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    setIntent(intent); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    callString=getIntent().getExtras().getString("call"); 
    //your code 
} 

希望這有助於。

+0

嗯,我已經試過您的解決方案,但每次我打電話startActivity()的新活動啓動,的onCreate ()方法被調用。 – almisoft

0

經過測試的時間,解決的辦法是隻在AndroidManifest.xml一行:

<activity 
    ... 
    android:launchMode="singleTask" 
    .... 
</activity>