đ ️ WorkManager - āĻ ্āϝাāύ্āĻĄ্āϰāϝ়েāĻĄে āĻŦ্āϝাāĻāĻ্āϰাāĻāύ্āĻĄ āĻাāĻ āϏāĻšāĻে āĻš্āϝাāύ্āĻĄেāϞ āĻāϰুāύ! đ¤
đ ️ WorkManager - āĻ ্āϝাāύ্āĻĄ্āϰāϝ়েāĻĄে āĻŦ্āϝাāĻāĻ্āϰাāĻāύ্āĻĄ āĻাāĻ āϏāĻšāĻে āĻš্āϝাāύ্āĻĄেāϞ āĻāϰুāύ! đ¤
WorkManager āĻšāϞো Android Jetpack-āĻāϰ āĻāĻāĻি āĻļāĻ্āϤিāĻļাāϞী API, āϝা āĻŦ্āϝাāĻāĻ্āϰাāĻāύ্āĻĄ āĻাāϏ্āĻ (āϝেāĻŽāύ āĻĄাāĻা āĻāĻĒāϞোāĻĄ, āϞোāĻাāϞ āĻĄাāĻাāĻŦেāϏ āĻāĻĒāĻĄেāĻ, āĻŦা āϏাāϰ্āĻাāϰ āĻĨেāĻে āύāϤুāύ āĻĄাāĻা āĻāύāϤে) āύিāϰাāĻĒāĻĻ āĻ āύিāϰ্āĻāϰāϝোāĻ্āϝāĻাāĻŦে āĻাāϞাāϝ়।
đ āĻেāύ WorkManager āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāĻŦেāύ?
✅ āĻŦ্āϝাāĻাāϰি āĻ
āĻĒāĻিāĻŽাāĻāĻেāĻļāύ - āĻ
্āϝাāύ্āĻĄ্āϰāϝ়েāĻĄেāϰ Doze āĻŽোāĻĄ āĻāĻŦং āĻŦ্āϝাāĻাāϰি āϏীāĻŽাāĻŦāĻĻ্āϧāϤা āĻŽাāύিāϝ়ে āĻাāĻ āĻāϰে
✅ āĻ
āĻĢāϞাāĻāύ āĻŽোāĻĄে āĻাāĻ āĻāϰāϤে āĻĒাāϰে - āĻāύ্āĻাāϰāύেāĻ āύা āĻĨাāĻāϞেāĻ āĻাāĻ āϏāĻŽ্āĻĒāύ্āύ āĻāϰে
✅ āĻĄিāĻাāĻāϏ āϰিāϏ্āĻাāϰ্āĻ āĻšāϞেāĻ āĻাāĻ āĻাāϞু āĻĨাāĻে
✅ āĻĒূāϰ্āĻŦ āĻļāϰ্āϤ (Constraints) āϏেāĻ āĻāϰা āϝাāϝ় - āϝেāĻŽāύ Wi-Fi āĻাāύেāĻāĻļāύ āĻĨাāĻāϞে āĻাāĻ āĻাāϞাāύো
đ WorkManager āĻিāĻাāĻŦে āĻাāĻ āĻāϰে?
1️⃣ āĻāĻĒāύি WorkRequest āϤৈāϰি āĻāϰāĻŦেāύ (āĻāĻāĻি āύিāϰ্āĻĻিāώ্āĻ āĻাāĻ)
2️⃣ āĻāĻি WorkManager āĻে āĻĻেāĻŦেāύ
3️⃣ WorkManager āĻŦ্āϝাāĻāĻ্āϰাāĻāύ্āĻĄে āĻাāĻāĻি āĻাāϞাāĻŦে
4️⃣ āĻাāĻāĻি āϏāĻĢāϞ / āĻŦ্āϝāϰ্āĻĨ / āĻĒুāύāϰাā§ āĻেāώ্āĻা āĻšāĻŦে
đĄ WorkManager āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰাāϰ āϧাāĻĒ
1️⃣ WorkManager āĻĄিāĻĒেāύ্āĻĄেāύ্āϏি āĻ ্āϝাāĻĄ āĻāϰুāύ
āĻāĻĒāύাāϰ build.gradle (Module: app) āĻĢাāĻāϞে āϝোāĻ āĻāϰুāύ:
dependencies {
implementation "androidx.work:work-runtime:2.8.1"
}
2️⃣ āĻāĻāĻি Worker āĻ্āϞাāϏ āϤৈāϰি āĻāϰুāύ
āĻāĻāĻি āĻ্āϞাāϏ āĻŦাāύিāϝ়ে Worker āĻāĻ্āϏāĻেāύ্āĻĄ āĻāϰুāύ āĻāĻŦং āĻŦ্āϝাāĻāĻ্āϰাāĻāύ্āĻĄ āĻাāĻ āĻĄিāĻĢাāĻāύ āĻāϰুāύ:
public class MyWorker extends Worker {
public MyWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
// đ āĻāĻাāύে āĻŦ্āϝাāĻāĻ্āϰাāĻāύ্āĻĄ āĻাāĻ āϞিāĻুāύ
Log.d("WorkManager", "āĻŦ্āϝাāĻāĻ্āϰাāĻāύ্āĻĄ āĻাāĻ āĻāϞāĻে...");
// ✅ āĻাāĻ āϏāĻĢāϞ āĻšāϞে
return Result.success();
// ❌ āĻাāĻ āĻŦ্āϝāϰ্āĻĨ āĻšāϞে
// return Result.failure();
// đ āĻĒুāύāϰাā§ āĻেāώ্āĻা āĻāϰāϤে āĻাāĻāϞে
// return Result.retry();
}
}
3️⃣ WorkRequest āϤৈāϰি āĻāϰুāύ āĻ āĻাāϞাāύ
WorkRequest workRequest = new OneTimeWorkRequest.Builder(MyWorker.class).build();
WorkManager.getInstance(context).enqueue(workRequest);
⏳ āĻāĻি āĻāĻāĻŦাāϰ āĻাāĻ āĻāϰāĻŦে। āϝāĻĻি āĻāĻĒāύি āĻŦাāϰāĻŦাāϰ āĻাāĻ āĻāϰāϤে āĻাāύ, āϤাāĻšāϞে PeriodicWorkRequest āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϤে āĻšāĻŦে:
PeriodicWorkRequest periodicWorkRequest =
new PeriodicWorkRequest.Builder(MyWorker.class, 15, TimeUnit.MINUTES).build();
WorkManager.getInstance(context).enqueue(periodicWorkRequest);
⚠️ āύূāύ্āϝāϤāĻŽ ā§§ā§Ģ āĻŽিāύিāĻ āĻŦ্āϝāĻŦāϧাāύে āĻাāĻ āĻাāϞাāύো āϝাāĻŦে।
4️⃣ āĻļāϰ্āϤ (Constraints) āϝোāĻ āĻāϰুāύ
āϧāϰুāύ, āĻāĻĒāύি āĻাāύ āϝে āĻাāĻāĻি āĻļুāϧু āϤāĻāύāĻ āĻāϞāĻŦে āϝāĻāύ āĻĄিāĻাāĻāϏ āĻাāϰ্āĻে āĻĨাāĻāĻŦে āĻāĻŦং Wi-Fi āĻ āύ āĻĨাāĻāĻŦে:
Constraints constraints = new Constraints.Builder()
.setRequiresCharging(true) // đ āĻাāϰ্āĻিং āĻ
āĻŦāϏ্āĻĨাā§ āĻাāĻ āĻāϰāĻŦে
.setRequiredNetworkType(NetworkType.UNMETERED) // đļ Wi-Fi āϤে āĻাāĻ āĻāϰāĻŦে
.build();
WorkRequest workRequest = new OneTimeWorkRequest.Builder(MyWorker.class)
.setConstraints(constraints)
.build();
WorkManager.getInstance(context).enqueue(workRequest);
5️⃣ WorkStatus āĻেāĻ āĻāϰা
WorkManager.getInstance(context).getWorkInfoByIdLiveData(workRequest.getId())
.observe(this, workInfo -> {
if (workInfo.getState() == WorkInfo.State.SUCCEEDED) {
Log.d("WorkManager", "✅ āĻাāĻ āϏāĻĢāϞāĻাāĻŦে āϏāĻŽ্āĻĒāύ্āύ āĻšāϝ়েāĻে!");
}
});
đ WorkManager āĻŦāύাāĻŽ āĻ āύ্āϝাāύ্āϝ āĻŦ্āϝাāĻāĻ্āϰাāĻāύ্āĻĄ āĻুāϞ
| āĻŦ্āϝাāĻāĻ্āϰাāĻāύ্āĻĄ āĻাāϏ্āĻ | āĻāύ্āĻাāϰāύেāĻ āĻĻāϰāĻাāϰ? | āĻŦ্āϝাāĻাāϰি āĻ āĻĒāĻিāĻŽাāĻāĻেāĻļāύ | āĻ āĻĢāϞাāĻāύ āϏাāĻĒোāϰ্āĻ | āĻĒুāύāϰাā§ āĻেāώ্āĻা |
|---|---|---|---|---|
| Thread | ❌ āύা | ❌ āύেāĻ | ❌ āύা | ❌ āύা |
| HandlerThread | ❌ āύা | ❌ āύেāĻ | ❌ āύা | ❌ āύা |
| AsyncTask (deprecated) | ❌ āύা | ❌ āύেāĻ | ❌ āύা | ❌ āύা |
| JobScheduler | ✅ āĻš্āϝাঁ | ✅ āĻাāϞো | ✅ āĻš্āϝাঁ | ✅ āĻš্āϝাঁ |
| WorkManager | ✅ āĻš্āϝাঁ | ✅ āϏেāϰা | ✅ āĻš্āϝাঁ | ✅ āĻš্āϝাঁ |
đ¯ WorkManager āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰাāϰ āϏেāϰা āϏāĻŽā§
✅ āĻĄাāĻা āĻŦ্āϝাāĻāĻāĻĒ āĻāϰা (āϝেāĻŽāύ Firebase-āĻ āĻĄাāĻা āĻāĻĒāϞোāĻĄ)
✅ āĻŦ্āϝāĻŦāĻšাāϰāĻাāϰীāϰ āϞোāĻাāϞ āĻĄাāĻাāĻŦেāϏ āĻāĻĒāĻĄেāĻ āĻāϰা
✅ āύিāϝ়āĻŽিāϤ āϏাāϰ্āĻাāϰ āĻĨেāĻে āĻĄাāĻা āĻĢেāĻ āĻāϰা
✅ āĻŦ্āϝāĻŦāĻšাāϰāĻাāϰীāϰ āĻাāĻেāϰ āϞāĻ āϏংāϰāĻ্āώāĻŖ āĻāϰা
đĨ āϏংāĻ্āώেāĻĒে WorkManager āĻী?
✔️ āϏেāϰা āĻŦ্āϝাāĻāĻ্āϰাāĻāύ্āĻĄ āĻাāϏ্āĻ āĻŽ্āϝাāύেāĻাāϰ
✔️ āĻ
্āϝাāύ্āĻĄ্āϰāϝ়েāĻĄেāϰ āĻŦ্āϝাāĻাāϰি āĻ
āĻĒāĻিāĻŽাāĻāĻেāĻļāύেāϰ āϏাāĻĨে āĻŽাāύিāϝ়ে āĻāϞে
✔️ āĻ
āĻĢāϞাāĻāύে āĻাāĻ āĻāϰāϤে āĻĒাāϰে, āĻĒুāύāϰাā§ āĻেāώ্āĻা āĻāϰāϤে āĻĒাāϰে
✔️ āĻ
্āϝাāĻĒে āϞং-āϰাāύিং āĻাāϏ্āĻ āϏāĻšāĻেāĻ āĻাāϞাāύো āϝাā§
Comments
Post a Comment