Firebase 作业调度程序无法在 Oreo 设备上工作

我正在使用 firebase 作业调度程序 api 在后台运行服务。在 Marshmallow 中它运行良好,但在使用 Oreo 设备时它无法运行。它显示错误或警告消息,例如

2019-02-04 14:20:22.285 2525-5699/? E/NetworkScheduler: Dropping task as app's play services SDK 版本不支持 Android O。请更新 SDK 或降低应用的目标 SDK 版本。包:com.webappclouds.jobserviceexample

我已经完成了 git hub 中的 firebase job dispatcher api step 中提到的内容。

MainActiviy.java

package com.webappclouds.jobserviceexample;    

import android.app.job.JobInfo;    

import android.app.job.JobScheduler;    

import android.content.ComponentName;    

import android.support.v7.app.AppCompatActivity;    

import android.os.Bundle;    

import android.util.Log;    

import android.view.View;    

import android.widget.Button;    

import com.firebase.jobdispatcher.Constraint;    

import com.firebase.jobdispatcher.FirebaseJobDispatcher;    

import com.firebase.jobdispatcher.GooglePlayDriver;    

import com.firebase.jobdispatcher.Job;    

import com.firebase.jobdispatcher.Lifetime;    

import com.firebase.jobdispatcher.RetryStrategy;    

import com.firebase.jobdispatcher.Trigger;       

public class MainActivity extends AppCompatActivity {


String TAG="MAIN ACTIVITY";

FirebaseJobDispatcher dispatcher;

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(this));


}


public void startjob(View view) {

    Log.d(TAG, "startjob: ");

    Job job = createJob(dispatcher);

    dispatcher.mustSchedule(job);


}


public void stopjob(View view) {

    Log.d(TAG, "cancelJob: ");

    dispatcher.cancelAll();

}


public Job createJob(FirebaseJobDispatcher dispatcher) {

    Log.d(TAG, "createJob: ");

    Job job = dispatcher.newJobBuilder()

            // persist the task across boots

            .setLifetime(Lifetime.FOREVER)

            // Call this service when the criteria are met.

            .setService(MakeService.class)

            // unique id of the task

            .setTag("LocationJob")


}

}


动漫人物
浏览 70回答 2
2回答

跃然一笑

错误消息字面上有解决方案更新 SDK 或降低应用的目标 SDK 版本。包:com.webappclouds.jobserviceexample更新您的图书馆0.5.2implementation 'com.firebase:firebase-jobdispatcher:0.8.5'我还注意到您的清单上有一个空的权限值,请将其删除。android:permission=""让我知道这是否有帮助💪我建议您迁移到,WorkManager因为它是一个更向后兼容且更简单的 API。使用此库时,您的所有API 级别限制都会得到处理(限制与安全性不同)。您可以在此处找到一个简单的工作流程示例:https://developer.android.com/topic/libraries/architecture/workmanager/basics#java和文档:https://developer.android.com/topic/libraries/architecture/workmanager/我建议您阅读两者。Android Oreo 后台执行限制:https ://www.youtube.com/watch?v=Pumf_4yjTMc

犯罪嫌疑人X

请在此处查看有关 Firebase JobDispatcher 的官方 Android 文档:WorkManager 是一个用于在 Android 中调度和执行可延迟后台工作的库。它是 Firebase JobDispatcher 的推荐替代品。以下指南将引导您完成将 Firebase JobDispatcher 实施迁移到 WorkManager 的过程。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java