0

我有一个活动和一个粘性服务。Activity 需要根据 Sticky Service 的值在其 UserInterface 中显示一些值。因此,每当服务更改他的数据时,活动都需要更新它的用户界面。但是服务应该如何通知活动来改变它的值呢?

请提醒活动有时不活跃,只有服务是粘性的。

4

1 回答 1

0

使用本地广播

在您的服务类别中:

public class LocalMessage extends IntentService{
    private Intent broadcast;
    public static final String BROADCAST = "LocalMessage.BROADCAST";
    public LocalMessage(String name) {
        super(name);
        broadcast = new Intent(name);
    }

@Override
    protected void onHandleIntent(Intent intent) {
        if (broadcast != null) LocalBroadcastManager.getInstance(context).sendBroadcast(broadcast);
    }
}

这是服务内广播的方法

private void sendLocalMessage(){
    (new LocalMessage(LocalMessage.BROADCAST)).onHandleIntent(null);
}

在您的活动中:

    private void registerBroadcastReciever() {
        IntentFilter filter = new IntentFilter(YourService.LocalMessage.BROADCAST);
        LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(receiver, filter);
    } 
    private BroadcastReceiver receiver = new BroadcastReceiver() {

            @Override
            public void onReceive(Context context, Intent intent) {
//doSmth
                }
            };

在您的活动 onDestroy() 方法中取消注册接收器;

于 2013-11-02T12:53:07.630 回答