অ্যান্ড্রয়েডে রানওনুআইথ্রেড বনাম লুপার.সেটমাইনলুপার () পোস্ট করুন


101

অ্যান্ড্রয়েডে ইউআই থ্রেডে কোনও কার্য সম্পাদন করতে রানওনুআইথ্রেড () বনাম লুপার.জেটমেনলুপার () পোস্ট () ব্যবহারের মধ্যে কোনও পার্থক্য আছে কি কেউ আমাকে বলতে পারবেন ??

কেবলমাত্র আমি যা নির্ধারণ করতে পারি তা হ'ল রানঅনুআইথ্রেড যেহেতু অ স্থিতিশীল ক্রিয়াকলাপ পদ্ধতি, লুপার.জেটমেইনলুপার ()। পোস্ট () আপনার যখন ক্লাসে এমন কিছু কোডিং করা দরকার যা কার্যকলাপ দেখতে না পারে (যেমন: একটি ইন্টারফেস)।

আমি ইউআই থ্রেডের উপর যে কোনও কিছু কার্যকর করা উচিত সে বিষয়ে কোনও আলোচনার খোঁজ করছি না, আমি পেয়েছি যে কিছু জিনিস এবং একটি দুর্দান্ত অনেক কিছুই করা উচিত নয়, তবে কিছু জিনিস (যেমন একটি অ্যাসিঙ্কটাস শুরু করা) অবশ্যই কার্যকর করা উচিত ইউআই থ্রেড

ধন্যবাদ,
আর।


6
runOnUiThreadএটির কোনও পার্থক্য নেই এটি ইতিমধ্যে ইউআই থ্রেড কিনা তা যাচাই করবে এবং আপনার কাজটিকে এটি হিসাবে পোস্ট করার পরিবর্তে সরাসরি Message
সম্পাদন করবে

4
ধন্যবাদ আপনি কি দয়া করে এটিকে কোনও উত্তরে রূপান্তর করবেন, তাই আমি এটি গ্রহণ করতে পারি ??
ধনী

এছাড়াও, আমি ইউআই থ্রেডটিতে কিছু কার্যকর হচ্ছে কিনা তা পরীক্ষা করার জন্য আমি ইতিমধ্যে কিছু কোড লিখেছি যাতে ম্যানুয়ালি অন্তর্ভুক্ত করা খুব সহজ হবে।
ধনী

উত্তর:


194

ব্যাকগ্রাউন্ড থ্রেড থেকে ডাকা হলে নিম্নলিখিতগুলি একই আচরণ করে:

  • ব্যবহার Looper.getMainLooper()

    Runnable task = getTask();
    new Handler(Looper.getMainLooper()).post(task);
    
  • ব্যবহার Activity#runOnUiThread()

    Runnable task = getTask();
    runOnUiThread(task);
    

কেবলমাত্র পার্থক্য হ'ল আপনি যখন থেকে ইউআই থ্রেড থেকে এটি করেন

public final void runOnUiThread(Runnable action) {
    if (Thread.currentThread() != mUiThread) {
        mHandler.post(action);
    } else {
        action.run();
    }
}

বর্তমান থ্রেডটি ইতিমধ্যে ইউআই থ্রেড কিনা তা যাচাই করবে এবং তারপরে সরাসরি এটি সম্পাদন করবে। বার্তা হিসাবে এটি পোস্ট করা কার্যকর ইউসি-থ্রেড পদ্ধতি থেকে ফিরে না আসা পর্যন্ত কার্যকর করতে বিলম্ব করবে।

Runnableইউআই থ্রেডে চালিত করার জন্য তৃতীয় উপায়ও রয়েছে যা হ'ল View#post(Runnable)- এটি ইউআই থ্রেড থেকে কল করা হলেও বার্তাটি সর্বদা পোস্ট করবে। এটি কার্যকর যেহেতু এটি নিশ্চিত করবে যে Viewকোডটি কার্যকর করার আগে সঠিকভাবে নির্মিত হয়েছে এবং একটি বিন্যাস রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.