【发布时间】:2015-02-28 10:44:38
【问题描述】:
我有一个广播接收器,只要系统中的下载完成,它就会被触发。我想要做的是将此接收器的结果发送到我更新视图的片段。 目前我使用这种方法。
public class DownloadCompleteReceiver extends BroadcastReceiver {
public interface DownloadListener {
public void downloadCompleted(int appId);
}
private static List<DownloadListener> downloadListeners = new LinkedList<>();
public static void registerDownloadListener(DownloadListener downloadListener){
downloadListeners.add(downloadListener);
}
public static void unregisterDownloadListener(DownloadListener downloadListener){
downloadListeners.remove(downloadListener);
}
@Override
public void onReceive(Context context, Intent intent) {
//whatever calculation needed to be done.
for(DownloadListener listener: downloadListeners)
if(listener != null)
listener.downloadCompleted(appId);
}
}
在我的片段 onStart 方法中,我这样做了。
DownloadCompleteReceiver.registerDownloadListener(this);
在 onStop 方法中
DownloadCompleteReceiver.unregisterDownloadListener(this);
然后我实现了接口,我得到了结果!这是一个简单的解决方案,效果很好。我想知道我的代码有问题吗?我想念什么吗?!我花了几个小时搜索此事,但没有人使用这种方法!有什么原因吗?
顺便说一句,我需要在单独的类中定义我的接收器,因为即使我的应用程序已关闭,我也希望它被触发,因此我的接收器的内部分类在这里不是一个选项。
【问题讨论】:
标签: android broadcastreceiver observer-pattern broadcast