Handler এবং AsyncTask ব্যবহার করে পর্যায়ক্রমে টাস্ক চালানো
এই উদাহরণে দেখানো হয়েছে কিভাবে একটি AsyncTask-কে নির্দিষ্ট সময়ंतरালে (৫ সেকেন্ড পরপর) বারবার চালানো যায়। Handler.postDelayed() ব্যবহার করে রিকারসিভ কল করা হয়েছে।
ধাপ ১: প্রজেক্ট তৈরি করুন
Android Studio-তে নতুন প্রজেক্ট শুরু করুন।
ধাপ ২: লেআউট (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="AsyncTask Demo"
android:textSize="24sp"
android:textStyle="bold" />
</RelativeLayout>
ধাপ ৩: MainActivity.java
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
runRepeatingTask();
}
private void runRepeatingTask() {
new RepeatingTask().execute();
}
private class RepeatingTask extends AsyncTask {
private final Handler handler = new Handler();
@Override
protected Void doInBackground(Void... voids) {
// ব্যাকগ্রাউন্ড কাজ এখানে করুন (নেটওয়ার্ক, ডিবি ইত্যাদি)
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
// UI আপডেট বা টোস্ট দেখান
Toast.makeText(MainActivity.this, "AsyncTask চালু হলো (৫ সেকেন্ড পরপর)", Toast.LENGTH_SHORT).show();
// ৫ সেকেন্ড পর আবার কল করুন
handler.postDelayed(() -> new RepeatingTask().execute(), 5000);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// মেমরি লিক রোধে handler ক্যাঞ্সেল করুন যদি প্রয়োজন
}
}
গভীর ব্যাখ্যা
- AsyncTask: ব্যাকগ্রাউন্ড থ্রেডে কাজ করে, UI থ্রেডে ফলাফল দেয়।
- Handler.postDelayed(): নির্দিষ্ট সময় পর Runnable এক্সিকিউট করে।
- রিকারসিভ কল:
onPostExecute-এ নতুন AsyncTask তৈরি করে আবারexecute()কল করা হয়েছে।
⚠️ সতর্কতা
AsyncTask Android 11 (API 30) থেকে deprecated। আধুনিক অ্যাপে Kotlin Coroutines, RxJava, বা WorkManager ব্যবহার করা উচিত। এই উদাহরণ শুধু লিগ্যাসি বোঝার জন্য।
ফলাফল
অ্যাপ চালু হওয়ার সাথে সাথে প্রতি ৫ সেকেন্ড পরপর একটি টোস্ট বার্তা দেখাবে "AsyncTask runs every 5 seconds"।