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-permission android:name="android.permission.INTERNET"/>
<application >
<!-- optional abaikan jika tidak menggunakan notification-->
<!-- <receiver android:name=".ServiceReceiver" android:process=".remote"/>-->
</application>
</manifest>public class MainActivity extends AppCompatActivity {
public static int INTERVAL = 15;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new ServiceClass(getApplicationContext(), INTERVAL);
}
}public class ServiceClass {
public ServiceClass(Context applicationContext, int interval) {
start(applicationContext, interval);
}
private void start(Context context, int INTERVAL) {
Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
// .setRequiresBatteryNotLow(true)
// .setRequiresCharging(true)
// .setRequiresStorageNotLow(true)
.build();
PeriodicWorkRequest w1 = new PeriodicWorkRequest.Builder(ServiceWorker.class, INTERVAL, TimeUnit.MINUTES).setConstraints(constraints).build();
WorkManager.getInstance(context).enqueue(w1);
WorkRequest w2 = new PeriodicWorkRequest.Builder(ServiceWorker2.class, INTERVAL, TimeUnit.MINUTES).setConstraints(constraints).build();
WorkManager.getInstance(context).enqueue(w2);
WorkRequest w3 = new PeriodicWorkRequest.Builder(ServiceWorker3.class, INTERVAL, TimeUnit.MINUTES).setConstraints(constraints).build();
WorkManager.getInstance(context).enqueue(w3);
}
}public class ServiceWorker extends Worker {
public ServiceWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
private static final String TAG = "NotificationWorker_";
@NonNull
@Override
public Result doWork() {
Log.d(TAG, "doWork_fix: kepanggil1");
SimpleDateFormat sdf = new SimpleDateFormat("HH_mm_ss", Locale.getDefault());
String currentDateandTime = sdf.format(new Date());
showNotification("WorkManager fix", currentDateandTime);
return Result.success();
}
private void showNotification(String task, String desc) {
NotificationManager manager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
String channelId = "task_channel";
String channelName = "task_name";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new
NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_DEFAULT);
manager.createNotificationChannel(channel);
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext(), channelId)
.setContentTitle(task)
.setContentText(desc)
.setGroup("com.gzeinnumer.workmanagerfix")
.setSmallIcon(R.mipmap.ic_launcher);
manager.notify(1, builder.build());
}
}- ServiceWorker2
- ServiceWorker3
- ServiceReceiver Optional.
Copyright 2020 M. Fadli Zein