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

时间:2017-01-24 14:20:12

标签: android performance android-service battery

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

我应该在发送数据后停止服务(致电stopSelf()),也可以等到下次我致电startService()而不停止服务,所以onCreate()和{{1}等方法不会再被召唤。

服务电话之间的时间间隔约为1分钟

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