Мне нужно запустить фоновый сервис, используя 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);
}
}