পোস্ট : পোস্টটি রান্নেবলকে বার্তার কাতারে যুক্ত করার কারণ হিসাবে তৈরি করে,
চলমান: কার্যকর করা যেতে পারে এমন একটি আদেশের প্রতিনিধিত্ব করে। প্রায়শই কোনও আলাদা থ্রেডে কোড চালানোর জন্য ব্যবহৃত হত।
রান () : ক্লাসের কোডের সক্রিয় অংশটি কার্যকর করা শুরু করে। এই পদ্ধতিটি ডাকা হয় যখন একটি থ্রেড শুরু হয় যা একটি শ্রেণীর সাথে তৈরি করা হয় যা রান্নেবলকে কার্যকর করে।
getView().post(new Runnable() {
@Override
public void run() {
getView().startAnimation(a);
}
});
কোড :getView().startAnimation(a);
আপনার কোডে,
পোস্টের ফলে রান্নেবল ( কোডটি বিভিন্ন থ্রেডে একটি চালানো হবে) বার্তার সারি যুক্ত করে।
সুতরাং ম্যাসেজের কিউ থেকে এটি আনার সময় স্টার্টএনিমেশনটি একটি নতুন থ্রেডে নিক্ষেপ করা হবে
[সম্পাদনা 1]
আমরা ইউআই থ্রেড (মূল থ্রেড) এর পরিবর্তে কেন একটি নতুন থ্রেড ব্যবহার করব?
ইউআই থ্রেড:
অ্যাপ্লিকেশন শুরু করা হলে, ইউআই থ্রেড স্বয়ংক্রিয়ভাবে তৈরি হয়
এটি যথাযথ উইজেটে ইভেন্ট প্রেরণের দায়িত্বে রয়েছে এবং এর মধ্যে অঙ্কনের ইভেন্টগুলিও অন্তর্ভুক্ত রয়েছে।
এটি আপনার সাথে অ্যান্ড্রয়েড উইজেটগুলির সাথে ইন্টারেক্ট করেন এমন থ্রেডও
উদাহরণস্বরূপ, আপনি যদি স্ক্রিনের বোতামটি স্পর্শ করেন তবে ইউআই থ্রেডটি স্পর্শ ইভেন্টটি উইজেটের কাছে প্রেরণ করে যা ফলস্বরূপ তার চাপা স্থিতি নির্ধারণ করে এবং ইভেন্টের সারিতে একটি অকার্যকর অনুরোধ পোস্ট করে। ইউআই থ্রেড অনুরোধটি প্রাপ্য করে এবং উইজেটকে নিজেই পুনরায় চিত্রিত করার জন্য জানিয়ে দেয়।
যদি ব্যবহারকারী কোনও বোতাম চাপায় যা লংওপ্রেশন করবে?
((Button)findViewById(R.id.Button1)).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
final Bitmap b = loadImageFromNetwork();
mImageView.setImageBitmap(b);
}
});
ইউআই জমাট বাঁধে। প্রোগ্রামটি ক্রাশও হতে পারে।
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap b = loadImageFromNetwork();
mImageView.setImageBitmap(b);
}
}).start();
}
এটি অ্যান্ড্রয়েড নিয়ম ভঙ্গ করে যা কর্মীদের থ্রেড থেকে সরাসরি ইউআই আপডেট করে না
অ্যান্ড্রয়েড অন্যান্য থ্রেড থেকে ইউআই থ্রেড অ্যাক্সেস করার বিভিন্ন উপায় সরবরাহ করে।
- Activity.runOnUiThread (runnable)
- View.post (runnable)
- View.postDelayed (চলমান, দীর্ঘ)
- ক্রীড়াশিক্ষক
নীচের মত,
View.post (runnable)
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap b = loadImageFromNetwork();
mImageView.post(new Runnable() {
public void run() {
mImageView.setImageBitmap(b);
}
});
}
}).start();
}
ক্রীড়াশিক্ষক
final Handler myHandler = new Handler(Looper.getMainLooper());
(new Thread(new Runnable() {
@Override
public void run() {
final Bitmap b = loadImageFromNetwork();
myHandler.post(new Runnable() {
@Override
public void run() {
mImageView.setImageBitmap(b);
}
});
}
})).start();
}

আরও তথ্যের জন্য
http://android-developers.blogspot.com/2009/05/painless-threading.html
http://www.aviyehuda.com/blog/2010/12/20/android-multithreading-in-a-ui-environment/