Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Firebase作业调度器未在Oreo设备上工作_Java_Android_Firebase_Android Jobscheduler_Firebase Job Dispatcher - Fatal编程技术网

Java Firebase作业调度器未在Oreo设备上工作

Java Firebase作业调度器未在Oreo设备上工作,java,android,firebase,android-jobscheduler,firebase-job-dispatcher,Java,Android,Firebase,Android Jobscheduler,Firebase Job Dispatcher,我正在使用firebase作业调度程序api在后台运行服务。在棉花糖中,它工作得很好,但在奥利奥设备中,它却不工作。它显示错误或警告消息,如 2019-02-04 14:20:22.285 2525-5699/?E/NetworkScheduler:正在删除任务 由于应用程序的play services SDK版本也不支持Android O 更新SDK或降低应用程序的目标SDK版本。包裹: com.webappclouds.jobserviceexample 我已经在git hub中完成了fir

我正在使用firebase作业调度程序api在后台运行服务。在棉花糖中,它工作得很好,但在奥利奥设备中,它却不工作。它显示错误或警告消息,如

2019-02-04 14:20:22.285 2525-5699/?E/NetworkScheduler:正在删除任务 由于应用程序的play services SDK版本也不支持Android O 更新SDK或降低应用程序的目标SDK版本。包裹: com.webappclouds.jobserviceexample

我已经在git hub中完成了firebase作业调度器api步骤中提到的内容

mainActivity.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")
            .setReplaceCurrent(true)
            // We are mentioning that the job is not periodic.
            .setRecurring(true)
           // Run between 30 - 60 seconds from now.
            .setTrigger(Trigger.executionWindow(0, 0))
            .setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
            // .setTrigger(Trigger.NOW)
            //Run this job only when the network is avaiable.
            .setConstraints(Constraint.ON_ANY_NETWORK)
            .build();
    return job;
}
}
package com.webappclouds.jobserviceexample;


import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.SystemClock;
import android.util.Log;


import com.firebase.jobdispatcher.JobService;

import java.util.logging.LogRecord;

import static android.content.ContentValues.TAG;

public class MakeService extends JobService {
    boolean jobintentService=false;
    Handler handler;

    @Override
    public void onCreate() {
        super.onCreate();
        handler= new Handler();
    }


    @Override
    public boolean onStartJob(com.firebase.jobdispatcher.JobParameters job) {
        Log.d(TAG, "onStartJob: ");
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                Log.d(TAG, "run: Handler");
                handler.postDelayed(this,10000);
            }
        },10000);
        return true;
    }

    @Override
    public boolean onStopJob(com.firebase.jobdispatcher.JobParameters job) {
        Log.d(TAG, "onStopJob: ");
        return true;
    }

}
MakeService.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")
            .setReplaceCurrent(true)
            // We are mentioning that the job is not periodic.
            .setRecurring(true)
           // Run between 30 - 60 seconds from now.
            .setTrigger(Trigger.executionWindow(0, 0))
            .setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
            // .setTrigger(Trigger.NOW)
            //Run this job only when the network is avaiable.
            .setConstraints(Constraint.ON_ANY_NETWORK)
            .build();
    return job;
}
}
package com.webappclouds.jobserviceexample;


import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.SystemClock;
import android.util.Log;


import com.firebase.jobdispatcher.JobService;

import java.util.logging.LogRecord;

import static android.content.ContentValues.TAG;

public class MakeService extends JobService {
    boolean jobintentService=false;
    Handler handler;

    @Override
    public void onCreate() {
        super.onCreate();
        handler= new Handler();
    }


    @Override
    public boolean onStartJob(com.firebase.jobdispatcher.JobParameters job) {
        Log.d(TAG, "onStartJob: ");
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                Log.d(TAG, "run: Handler");
                handler.postDelayed(this,10000);
            }
        },10000);
        return true;
    }

    @Override
    public boolean onStopJob(com.firebase.jobdispatcher.JobParameters job) {
        Log.d(TAG, "onStopJob: ");
        return true;
    }

}
清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.webappclouds.jobserviceexample">

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service
            android:exported="false"
            android:permission=""
            android:name=".MakeService">
            <intent-filter>
                <action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE"/>
            </intent-filter>
        </service>
    </application>

</manifest>
buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
        classpath 'com.google.gms:google-services:4.2.0'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
构建(应用程序)

我希望这能奏效,我不知道发生了什么

**解决方案** 这是由于这个版本 实现'com.firebase:firebase作业调度程序:0.8.5'
我更新了它,它从现在开始工作

错误消息确实有解决方案

更新SDK或降低应用程序的目标SDK版本。包裹: com.webappclouds.jobserviceexample

0.5.2

implementation 'com.firebase:firebase-jobdispatcher:0.8.5'
我还注意到您的清单上有一个空的权限值,请删除它

android:permission=""

让我知道这是否有帮助错误消息确实有解决方案

更新SDK或降低应用程序的目标SDK版本。包裹: com.webappclouds.jobserviceexample

0.5.2

implementation 'com.firebase:firebase-jobdispatcher:0.8.5'
我还注意到您的清单上有一个空的权限值,请删除它

android:permission=""

让我知道这是否有帮助请查看有关Firebase JobDispatcher的Android官方文档:

WorkManager是一个用于调度和执行可延迟任务的库 Android的背景工作。建议将其更换为 Firebase作业调度器。以下指南将引导您完成以下步骤: 将Firebase JobDispatcher实现迁移到的过程 工作经理


请查看有关Firebase JobDispatcher的官方Android文档:

WorkManager是一个用于调度和执行可延迟任务的库 Android的背景工作。建议将其更换为 Firebase作业调度器。以下指南将引导您完成以下步骤: 将Firebase JobDispatcher实现迁移到的过程 工作经理


“它不起作用”,你能说得更具体一点吗?你会有意想不到的行为吗?你收到错误消息了吗。。嗨,斯图尔图斯克。我更新了问题。如果您需要更多,请询问我您是否阅读了这些错误消息并遵循了他们的建议?我试图将play service添加到应用程序依赖中,但它警告我们不要使用它,它已经随firebase提供了“它不工作”,您能更具体一点吗?你会有意想不到的行为吗?你收到错误消息了吗。。嗨,斯图尔图斯克。我更新了问题。如果您需要更多,请询问我您是否阅读了这些错误消息并遵循了他们的建议?我尝试将play service添加到应用程序依赖中,但它警告我们不要使用它,它已经随firebase提供