Android上下文有效期有多长?

时间:2018-01-19 11:25:03

标签: android broadcastreceiver android-context

我正在开发一个Android应用程序,它在服务器上执行登录。只有在此登录后,网络才能访问Internet。互联网连接在30分钟不活动时丢失。 (这真令人讨厌,这就是为什么我要尝试自动化这个......)

因此,想法是创建一个应用程序,其中用户(也就是我懒惰的自己)只输入他的凭据一次,并且在他的余生中,登录会在后台自动发生。

由于我尝试使用最佳做法来避免电池消耗,我首先想到的是必须满足登录需要满足的条件:

  • 电话必须连接到Wifi。
  • wifi有一定的名称(因为只有某些Wifis需要登录)
  • wifi没有互联网连接。

我想:使用BroadcastReceiver,听取CONNECTIVITY_ACTION,然后检查是否有必要。我阅读了有关Manifest注册接收器的最新更改,并使用了已注册的Context,然后启动了JobService。但过了一段时间,应用程序不再接收这些操作。

由于Android Developer website州:

  

只要注册上下文有效,上下文注册的接收器就会接收广播。

我想知道上下文实际有效多久了?这甚至是实现目标的正确方法吗?

2 个答案:

答案 0 :(得分:1)

在同一地方解释:

  

只要注册上下文有效,上下文注册的接收器就会接收广播。例如,如果您在“活动”上下文中注册,则只要活动未被销毁,您就会收到广播。如果您在应用程序上下文中注册,则只要应用程序正在运行,您就会收到广播。

使用JobService并使用setRequiredNetworkType设置所需的网络类型,不要使用BroadcastReceiver处理网络更改。您可以将事件设置为在设备重新启动后保留。

编辑:我会创建一个具有所需网络类型WIFI的持久JobService(如果设备连接到WIFI网络,则每次都应该运行)。如果它运行,我会检查,如果设备连接到正确的网络。如果是这种情况,我会开始一个周期< 30分钟。如果您仍然连接到正确的网络并登录(如果需要),此作业将检查。如果设备没有连接到正确的WIFI,我将终止第二个作业。

答案 1 :(得分:0)

可能它与Context本身无关。我认为你在安排后台工作时做错了什么。所以你需要定期设置工作。