我有一个定期向服务器发送数据的应用程序。我想知道电池使用的最佳做法是什么。
我应该在发送数据后停止服务(致电stopSelf()
),也可以等到下次我致电startService()
而不停止服务,所以onCreate()
和{{1}等方法不会再被召唤。
答案 0 :(得分:3)
此处的最佳做法是使用JobScheduler进行此类工作。它已经针对电池使用进行了优化,可以批量作业并进行大量其他优化。
以下是一个例子:
ComponentName serviceName = new ComponentName(context, YourDataSyncService.class);
JobInfo jobInfo = new JobInfo.Builder(JOB_ID, serviceName)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
.setPeriodic(60000) //1 min
.build();
JobScheduler scheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
int result = scheduler.schedule(jobInfo);
if (result == JobScheduler.RESULT_SUCCESS) Log.d(TAG, "Job scheduled successfully!");
在这种情况下,您不需要让服务继续运行。
如果您的API级别是< 21,请检查FireBase job dispatcher
此外,如果您的服务只应在您的应用和服务器之间同步数据 - 您可以查看专为此设计的SyncAdapter。