আমরা সরাসরি মূল থ্রেডে ব্যাকগ্রাউন্ড থ্রেড স্পর্শ করতে পারি না তাই হ্যান্ডলার মূল থ্রেডে উপলব্ধ সমস্ত ইভেন্টগুলিকে একটি সারিতে সংগ্রহ করতে চলেছে এবং এই সারিটি লুপার ক্লাসে রাখে৷
অ্যান্ড্রয়েডে হ্যান্ডলার প্রধানত ব্যাকগ্রাউন্ড থ্রেড বা মেইন থ্রেড ছাড়া অন্য থ্রেড থেকে মেইন থ্রেড আপডেট করতে ব্যবহৃত হয়। হ্যান্ডলারে দুটি পদ্ধতি রয়েছে।
-
পোস্ট() - এটি লুপার ব্যবহার করে ব্যাকগ্রাউন্ড থ্রেড থেকে মেইন থ্রেডে মেসেজ পোস্ট করবে।
-
বার্তা পাঠান() − যদি আপনি ui (ব্যাকগ্রাউন্ড থ্রেড থেকে বার্তা) বা ui ফাংশনে যা পাঠিয়েছেন তা সংগঠিত করতে চান। আপনার sendMessage().
ব্যবহার করা উচিত
এই উদাহরণটি প্রোগ্রেস ডায়ালগে কীভাবে পরিচালনা করতে হয় তা প্রদর্শন করে।
ধাপ 1 − অ্যান্ড্রয়েড স্টুডিওতে একটি নতুন প্রকল্প তৈরি করুন, ফাইল ⇒ নতুন প্রকল্পে যান এবং একটি নতুন প্রকল্প তৈরি করতে সমস্ত প্রয়োজনীয় বিবরণ পূরণ করুন৷
ধাপ 2 − res/layout/activity_main.xml-এ নিম্নলিখিত কোড যোগ করুন।
<?xml version = "1.0" encoding = "utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android = "https://schemas.android.com/apk/res/android" xmlns:app = "https://schemas.android.com/apk/res-auto" xmlns:tools = "https://schemas.android.com/tools" android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".MainActivity"> <Button android:id = "@+id/button" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:text = "Click" app:layout_constraintBottom_toBottomOf = "parent" app:layout_constraintLeft_toLeftOf = "parent" app:layout_constraintRight_toRightOf = "parent" app:layout_constraintTop_toTopOf = "parent" /> </android.support.constraint.ConstraintLayout>
ধাপ 3 − src/MainActivity.java
-এ নিম্নলিখিত কোড যোগ করুনimport android.app.ProgressDialog; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; public class MainActivity extends AppCompatActivity implements View.OnClickListener { Handler mHandler; ProgressDialog mProgressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = findViewById(R.id.button); button.setOnClickListener(this); } @RequiresApi(api = Build.VERSION_CODES.O) @Override public void onClick(View v) { switch (v.getId()) { case R.id.button: notificationDialog(); break; } } @RequiresApi(api = Build.VERSION_CODES.O) private void notificationDialog() { mHandler=new Handler(); mProgressBar= new ProgressDialog(MainActivity.this); mProgressBar.setMax(100); mProgressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); mProgressBar.show(); new Thread(new Runnable() { @Override public void run() { for (int i = 0; i <= 100; i++) { final int currentProgressCount = i; try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } //Update the value background thread to UI thread mHandler.post(new Runnable() { @Override public void run() { mProgressBar.setProgress(currentProgressCount); } }); } } }).start(); } }
আপনার অ্যাপ্লিকেশন চালানোর চেষ্টা করা যাক. আমি ধরে নিচ্ছি আপনি আপনার কম্পিউটারের সাথে আপনার আসল অ্যান্ড্রয়েড মোবাইল ডিভাইসটি সংযুক্ত করেছেন৷ অ্যান্ড্রয়েড স্টুডিও থেকে অ্যাপটি চালাতে, আপনার প্রোজেক্টের অ্যাক্টিভিটি ফাইলগুলির একটি খুলুন এবং টুলবার থেকে রান ইক্লিপস রান আইকন আইকনে ক্লিক করুন। একটি বিকল্প হিসাবে আপনার মোবাইল ডিভাইসটি নির্বাচন করুন এবং তারপরে আপনার মোবাইল ডিভাইসটি পরীক্ষা করুন যা আপনার ডিফল্ট স্ক্রীন প্রদর্শন করবে৷
যখন ব্যবহারকারী উপরের বোতামে ক্লিক করবে তখন এটি নিচের মত প্রগতি ডায়ালগ দেখাবে।