【发布时间】:2011-09-11 04:33:49
【问题描述】:
在我的应用程序中,我想提供一个动作,该动作应定期在后台执行。所以我使用了AlarmManager,它启动了一个IntentService。
棘手的部分是,此后台操作需要 Internet 连接。因此,当设备被锁定时,我尝试使用似乎没有强制连接的 WakeLock。
然后我考虑注册一个 BroadcastReceiver 以在服务启动时侦听“android.net.conn.CONNECTIVITY_CHANGE”,并在收到所需的广播后立即取消注册。
我的代码如下所示:
public class BackgroundService extends IntentService {
private static final IntentFilter filter =
new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
private static NetworkStateChangedReceiver receiver =
new NetworkStateChangedReceiver();
protected void onHandleIntent(Intent intent) {
registerReceiver(receiver, filter);
}
}
我现在的问题是:一旦服务停止,这个接收器会被销毁吗(因为它什么都不做,只要没有可用的连接)? 因此,我怎样才能实现一项服务,它会延迟它的工作,直到网络连接可用?
谢谢。
【问题讨论】: