gpt4 book ai didi

android - 延迟服务操作直到网络连接可用

转载 作者:行者123 更新时间:2023-11-30 04:32:56 28 4
gpt4 key购买 nike

在我的应用程序中,我想提供一个应定期在后台执行的操作。所以我使用 AlarmManager,它启动了一个 IntentService。

棘手的部分是,这个后台操作需要互联网连接。因此,当设备被锁定时,我尝试使用似乎没有强制连接的 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);
}
}

我现在的问题是:一旦服务停止(因为它无事可做,只要没有可用连接),这个接收器是否会被销毁?因此,我如何实现一种服务,在网络连接可用之前延迟它的工作?

谢谢。

最佳答案

Will this receiver be destroyed, as soon as the service stops (as it has nothing to do, as long as no connection is available)?

是的。它会存在几微秒。

And therefore, how can I realize a service, that delays it's work until a network connection is availalbe?

使用ConnectivityManagergetActiveNetworkInfo(),查看是否有连接,如果没有,就退出onHandleIntent(),等待下一个闹钟。

或者,在 list 中注册您的CONNECTIVITY_ACTION 接收器并使用它来安排和取消您的闹钟,这样闹钟只会在有连接时激活。

还有其他各种策略,但这两个应该能为您提供一个起点。

关于android - 延迟服务操作直到网络连接可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7374071/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com