如果我会在短时间后再次启动android服务,我应该停止它吗



我有一个定期向服务器发送数据的应用程序。我想知道使用电池的最佳做法是什么。

我应该在发送数据后停止服务(调用stopSelf()),还是等到下次调用startService()时才停止服务,这样就不会再次调用onCreate()onDestroy()等方法。

服务呼叫之间的时间间隔大约为1分钟

这里的最佳实践是使用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作业调度程序

此外,如果你的服务应该只在你的应用程序和服务器之间同步数据,你可以检查SyncAdapter,它是专门为此设计的。

最新更新