2016-10-28 68 views
1

我在现场使用JSON做一些处于睡眠模式

Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(new Runnable() { 

public void run() { 
       notif();    
       } 

      }, 0, 60, TimeUnit.SECONDS); 

但这种检查并不在睡眠模式下工作,检查新邮件。比有可能取代?

+0

每分钟做一次网络I/O对电池来说是非常糟糕的。您是否计划切换到FCM进行推送消息传递?或者,你打算减少频率(例如每小时一次)吗?或者,您是否允许用户选择频率,以便用户可以根据您的应用调整电池使用量? – CommonsWare

+0

我会每小时进行一次检查。 1分钟 - 本测试期间 –

回答

2

如果您的minSdkVersion为21或更高,请使用JobScheduler

如果您的minSdkVersion低于21,并且由于其他原因而使用Play Services SDK,use firebase-job-dispatcher

如果您minSdkVersion低于21,你宁愿不被捆绑到使用Play服务SDK,use Evernote's android-job library,它采用JobScheduler在那里可以和缓慢下降到AlarmManager它不能。

请注意,Android 6.0+上的打盹模式和应用程序待机将阻止您执行定期工作,除非设备定义的“空闲维护时段”可能每隔几小时进行一次。

您可以在the documentation了解更多关于计划工作的信息。

+0

对不起,我刚开始使用android。我如何知道minSdkVersion? –

+0

就您现在的情况而言,如果您使用的是Android Studio,并且有典型的Android Studio项目,请查看'app/build.gradle',在那里您会找到一个'minSdkVersion'行。或者,进入文件>项目结构,点击左边列表中的模块,点击Flavors选项卡,然后查看“Min Sdk Version”下拉列表。但是,更重要的是,您需要**根据您要支持的Android操作系统版本选择** minSdkVersion。请参阅[文档](https://developer.android.com/studio/publish/versioning.html)。 – CommonsWare

+0

minSdkVersion 19 –