Firebase JobDispatcher неправильно планирует - PullRequest
0 голосов
/ 06 февраля 2019

Мне нужно запустить фоновый сервис, используя JobDispatcher, нажав кнопку.У меня есть одно действие со многими фрагментами, и в одном из моих фрагментов есть кнопка, которая должна вызывать фоновую службу в течение 10 секунд после нажатия кнопки, но эта служба запускается после запуска моего приложения.Он должен начинаться после нажатия кнопки, но запускаться до нажатия кнопки.

Должен отображаться тост после нажатия кнопки.Пожалуйста, смотрите ниже код, который я пробовал до сих пор.

Класс обслуживания

public class DayJobService extends JobService {
    ExpenseClass expenseClass;
    DatabaseReference dbref;
    String username,currentdate,monthyr,expensesname,totaltxt;
    Context context;

    public DayJobService(){

    }
    @Override
    public boolean onStartJob(final JobParameters job) {
        Log.d("Started JOb","job started success");
        Toast.makeText(getApplicationContext(),"JOB STARTED",Toast.LENGTH_SHORT).show();
        return false;
    }

    @Override
    public boolean onStopJob(JobParameters job) {
        return true;
    }

Манифест

<service
        android:exported="false"
        android:name=".JobService.DayJobService">
        <intent-filter>
            <action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE"/>
        </intent-filter>
    </service>

FragmentClass

public class DayExpensesFragment extends Fragment implements RecyclerItemTouchHelper.RecyclerItemTouchHelperListener{
     @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_day_expenses, container, false);
    startBtn=(Button)view.findViewById(R.id.startJob);
     firebaseJobDispatcher=new FirebaseJobDispatcher(new 
    GooglePlayDriver(getContext()));
    startBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startJob();
            }
        });
    }

     public void startJob(){
        Job job=firebaseJobDispatcher.newJobBuilder().
                setService(DayJobService.class).setTag(DAY_JOB_TAG).setLifetime(Lifetime.FOREVER).
                setRecurring(true).setTrigger(Trigger.executionWindow(10,15)).
                setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL).setReplaceCurrent(false).
                setConstraints(Constraint.ON_ANY_NETWORK).build();
        firebaseJobDispatcher.mustSchedule(job);

    }
} 
...