Я хочу использовать JobIntentService для отправки запросов на сервер каждый раз. Проблема в том, что в версиях до 26 android он отлично работает с AlarmManager, но в самых последних версиях - нет.
public class ExampleJobIntentService extends JobIntentService {
private static final String TAG = "ExampleJobIntentService";
static void enqueueWork(Context context, Intent work) {
enqueueWork(context, ExampleJobIntentService.class, 123, work);
}
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG, "onCreate");
}
@Override
protected void onHandleWork(@NonNull Intent intent) {
Log.d(TAG, "onHandleWork");
String input = intent.getStringExtra("inputExtra");
for (int i = 0; i < 10; i++) {
Log.d(TAG, input + " - " + i);
if (isStopped()) return;
SystemClock.sleep(1000);
}
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy");
Intent serIntent = new Intent(this, ExampleJobIntentService.class);
serIntent.putExtra("inputExtra", Singleton.getInstance().getWord());
PendingIntent alarmIntent = PendingIntent.getService(getApplicationContext(), 1, serIntent, 0);
AlarmManager alarmSer = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmSer.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 1000, alarmIntent);
}
@Override
public boolean onStopCurrentWork() {
Log.d(TAG, "onStopCurrentWork");
return super.onStopCurrentWork();
}
}
Это в android VM из 24 идет очень хорошо, но в 29 он входит в «onCreate», но он не запускает «onHandleWork», я думаю, потому что он не запускает «enqueueWork».
Создание нового намерения с помощью ExampleJobIntentService работает, но оно делает это очень быстро:
Intent serIntent = new Intent(this, ExampleJobIntentService.class);
serIntent.putExtra("inputExtra", Singleton.getInstance().getWord());
ExampleJobIntentService.enqueueWork(this, serIntent);
Я хочу, чтобы он проснулся, например, через минуту. Также, в крайнем случае, я мог бы приостановить это, но я бы предпочел иметь возможность создать будильник.
Если вы знаете другой путь, добро пожаловать. Большое спасибо.