在我的应用程序中,当发生特定事件时(例如电池电量低于10%),我需要每天向服务器发送一些数据(例如电池电量低于10%)
它在前台运行良好,但在后台出现问题,特别是在三星设备上。
我发现在尝试发出HTTP请求后在后台大约8分钟后,由于互联网连接不可用,它总是失败 。 (这不是打盹模式问题!)
查询连接管理器确实批准当时没有连接。
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return netInfo != null && netInfo.isConnected(); \\ FALSE IN THIS CASE
我考虑过使用JobScheduler,但问题是从事件发生的那一刻起数据发送时间不应超过30秒。
所以我尝试使用最后的解决方案 - 获取唤醒锁。
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "WakeLock");
wakeLock.acquire(10000);
它有帮助,但有50%的时间。
似乎也是在将设备唤醒10秒后,仍然没有互联网连接。
我完全没有想法。
还有其他解决方案我没有想到吗?
谢谢!