我發現的最簡單的方法是使用支持庫中的LocalBroadcast。這裏有一個例子:
在服務:
String action = "status"; // arbitrary string
private void updateStatus(){
Intent intent = new Intent(action);
// fill the intent with other variables you want to pass
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}
在你的活動:
@Override
protected void onCreate(Bundle savedInstanceState) {
LocalBroadcastManager.getInstance(context).registerReceiver(receiver,new IntentFilter(action));
}
@Override
protected void onResume() {
LocalBroadcastManager.getInstance(context).registerReceiver(receiver,new IntentFilter(action));
}
@Override
protected void onPause() {
LocalBroadcastManager.getInstance(context).unregisterReceiver(receiver);
}
String action = "status";
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if(intentAction.equals(action){
// Process the status from the service
}
}
};