Work Manager sudah fix, ada optional BroadcastRecaiver. abaikan jita tidak ingin pakai
- gradle
implementation "androidx.work:work-runtime:2.3.0"
implementation "androidx.work:work-rxjava2:2.3.0"
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.9'
implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'- Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest >
<uses-permissionandroid:name="android.permission.INTERNET"/>
<application >
<!-- optional abaikan jika tidak menggunakan notification--><!-- <receiver android:name=".ServiceReceiver" android:process=".remote"/>-->
</application>
</manifest>publicclassMainActivityextendsAppCompatActivity {
publicstaticintINTERVAL = 15;
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newServiceClass(getApplicationContext(), INTERVAL);
}
}publicclassServiceClass {
publicServiceClass(ContextapplicationContext, intinterval) {
start(applicationContext, interval);
}
privatevoidstart(Contextcontext, intINTERVAL) {
Constraintsconstraints = newConstraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
// .setRequiresBatteryNotLow(true)// .setRequiresCharging(true)// .setRequiresStorageNotLow(true)
.build();
PeriodicWorkRequestw1 = newPeriodicWorkRequest.Builder(ServiceWorker.class, INTERVAL, TimeUnit.MINUTES).setConstraints(constraints).build();
WorkManager.getInstance(context).enqueue(w1);
WorkRequestw2 = newPeriodicWorkRequest.Builder(ServiceWorker2.class, INTERVAL, TimeUnit.MINUTES).setConstraints(constraints).build();
WorkManager.getInstance(context).enqueue(w2);
WorkRequestw3 = newPeriodicWorkRequest.Builder(ServiceWorker3.class, INTERVAL, TimeUnit.MINUTES).setConstraints(constraints).build();
WorkManager.getInstance(context).enqueue(w3);
}
}publicclassServiceWorkerextendsWorker {
publicServiceWorker(@NonNullContextcontext, @NonNullWorkerParametersworkerParams) {
super(context, workerParams);
}
privatestaticfinalStringTAG = "NotificationWorker_";
@NonNull@OverridepublicResultdoWork() {
Log.d(TAG, "doWork_fix: kepanggil1");
SimpleDateFormatsdf = newSimpleDateFormat("HH_mm_ss", Locale.getDefault());
StringcurrentDateandTime = sdf.format(newDate());
showNotification("WorkManager fix", currentDateandTime);
returnResult.success();
}
privatevoidshowNotification(Stringtask, Stringdesc) {
NotificationManagermanager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
StringchannelId = "task_channel";
StringchannelName = "task_name";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannelchannel = newNotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_DEFAULT);
manager.createNotificationChannel(channel);
}
NotificationCompat.Builderbuilder = newNotificationCompat.Builder(getApplicationContext(), channelId)
.setContentTitle(task)
.setContentText(desc)
.setGroup("com.gzeinnumer.workmanagerfix")
.setSmallIcon(R.mipmap.ic_launcher);
manager.notify(1, builder.build());
}
}Copyright 2020 M. Fadli Zein