【问题标题】:Should I stop my android service if I will start it again after a short time?如果我要在短时间内重新启动它,我应该停止我的 android 服务吗?
【发布时间】:2017-01-24 14:20:11
【问题描述】:

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

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

服务调用之间的时间间隔大约是 1 分钟。

【问题讨论】:

  • 停止服务并在需要时重新启动它没有任何问题。如果在所有任务完成后这是一个 IntentService,它将自行停止而无需调用 .stopSelf()

标签: android performance android-service battery


【解决方案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 级别 FireBase job dispatcher

此外,如果您的服务应该只在您的应用和服务器之间同步数据 - 您可以查看专门为此设计的 SyncAdapter

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2012-12-24
    相关资源
    最近更新 更多