我们有一个基于wifi的应用程序,拥有数百万的客户群。应用程序的核心逻辑是在连接时将用户连接到具有自动登录功能的公共开放热点。申请完全取决于这些广播。
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
广播后,应用会检查已连接的wifi热点并尝试自动登录。
在Android O中,app不会收到任何上述广播。看看有广播接收器解决方法的后台服务,似乎android正在停止服务一段时间。
任何建议都表示赞赏。
答案 0 :(得分:4)
使用numbers<-c(1:282,sample(283:730),731:nrow(df))
df<-df[numbers,]
(JobScheduler
或JobIntentService
来实现向后兼容性)。请参阅latest video from Android Developers。
使用方法Firebase Job Dispatcher
,您可以安排在满足特定网络条件时运行的作业。
引自this thread:
网络类型可以是以下三个值之一:
JobInfo.NETWORK_TYPE_NONE:无需网络连接。
JobInfo.NETWORK_TYPE_UNMETERED:未计量的WiFi或以太网连接。
- JobInfo.NETWORK_TYPE_ANY:任何网络连接(WiFi或手机)。
JobInfo.Builder.setRequiredNetworkType()
符合您的需求。
答案 1 :(得分:1)
取自文档:
针对Android 7.0(API级别24)及更高版本的应用无法接收 如果CONNECTIVITY_ACTION声明广播接收器,则广播 在他们的清单中。应用仍会收到CONNECTIVITY_ACTION 广播,如果他们注册他们的BroadcastReceiver Context.registerReceiver()和该上下文仍然有效。 Monitor for Changes in Connectivity
由于文件和CommonsWare(在评论中提到)使用前台服务并在那里注册您的接收器
答案 2 :(得分:1)