উত্তর:
এ PendingIntent
হ'ল একটি টোকেন যা আপনি কোনও বিদেশী অ্যাপ্লিকেশনকে (যেমন NotificationManager
, AlarmManager
হোম স্ক্রিন AppWidgetManager
বা অন্যান্য তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলি) দেন, যা বিদেশী অ্যাপ্লিকেশনটিকে আপনার অ্যাপ্লিকেশনের অনুমতিগুলি কোনও পূর্বনির্ধারিত কোড প্রয়োগ করতে দেয় ।
আপনি যদি বৈদেশিক অ্যাপ্লিকেশনটিকে একটি উদ্বেগ দেন, এটি আপনার Intent
নিজের অনুমতি দিয়ে কার্যকর করবে । তবে আপনি যদি বিদেশী অ্যাপ্লিকেশনটিকে একটি দেন তবে PendingIntent
সেই অ্যাপ্লিকেশনটি Intent
আপনার আবেদনের অনুমতি ব্যবহার করে কার্যকর করবে ।
মুলতুবি থাকা উদ্দেশ্যটি হ'ল একটি টোকেন যা আপনি কিছু অ্যাপ্লিকেশনকে আপনার অ্যাপ্লিকেশন প্রসেসটি বেঁচে আছেন বা না নির্বিশেষে আপনার অ্যাপ্লিকেশনগুলির পক্ষে কোনও ক্রিয়া সম্পাদন করতে দেন।
আমি মনে করি ডকুমেন্টেশন যথেষ্ট পরিমাণে বিশদযুক্ত: মুলতুবি ইনটেন্ট ডক্স ।
(ব্রডকাস্টিং ইনটেন্টস, শিডিউলিং অ্যালার্ম) যেমন মুলতুবি থাকা এজেন্টগুলির জন্য ব্যবহারের ক্ষেত্রে কেবল তা ভাবুন এবং ডকুমেন্টেশনটি আরও স্পষ্ট এবং অর্থবহ হয়ে উঠবে।
আমার ক্ষেত্রে, উপরের উত্তরগুলি বা গুগলের অফিশিয়াল ডকুমেন্টেশনগুলির কোনওটিই আমাকে PendingIntent
ক্লাসের ধারণাটি ধরতে সহায়তা করেনি ।
এবং তারপরে আমি এই ভিডিওটি পেয়েছি, গুগল আই / ও 2013, ব্লু ডট সেশন ছাড়িয়ে । এই ভিডিওতে প্রাক্তন গুগলার জাইকুমার গণেশ কী PendingIntent
তা ব্যাখ্যা করেছেন এবং সেই জিনিসটিই আমাকে এর বড় ছবি দিয়েছে।
নীচে কেবল উপরের ভিডিওটির প্রতিলিপি দেওয়া আছে ( 15:24 থেকে )।
সুতরাং একটি মুলতুবি উদ্দেশ্য কী?
এটি একটি টোকেন যা আপনার অ্যাপ্লিকেশন প্রক্রিয়াটি অবস্থান প্রক্রিয়াটি দেবে এবং আগ্রহের কোনও ঘটনা ঘটলে লোকেশন প্রক্রিয়াটি আপনার অ্যাপ্লিকেশনটি জাগাতে ব্যবহার করবে । সুতরাং এর মূলত অর্থ এই যে পটভূমিতে আপনার অ্যাপটি সর্বদা চলমান থাকে না। যখন আগ্রহের কিছু ঘটে তখন আমরা আপনাকে জাগিয়ে তুলব। এটি প্রচুর ব্যাটারি সাশ্রয় করে।
কোডটির এই স্নিপেট (যা সেশনের স্লাইডে অন্তর্ভুক্ত) এর সাথে এই ব্যাখ্যাটি আরও স্পষ্ট হয়ে ওঠে।
PendingIntent mIntent = PendingIntent.getService(...);
mLocationClient.requestLocationUpdates(locationRequest, mIntent);
public void onHandleIntent(Intent intent) {
String action = intent.getAction();
if (ACTION_LOCATION.equals(action)) {
Location location = intent.getParcelableExtra(...)
}
}
কেন পেন্ডিং ইন্টেন্ট দরকার? আমি ভাবছিলাম
Intent
বাIntent
একই উদ্দেশ্যে একটি সাধারণ ব্যবহার করতে পারি না ।যেমনIntent bluetoothIntent= new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
যদি আমি bluetoothIntent
অন্য কোনও অ্যাপ্লিকেশনে প্রেরণ করি , যার অনুমতি নেই android.permission.BLUETOOTH_ADMIN
, তবে সেই অ্যাপ্লিকেশনটি ব্লুটুথ সক্ষম করতে পারে না startActivity(bluetoothIntent)
।
সীমাবদ্ধতা ব্যবহার অতিক্রম করা হয় PendingIntent
। সঙ্গে PendingIntent
প্রাপ্তির অ্যাপ্লিকেশন, প্রয়োজন নেই android.permission.BLUETOOTH_ADMIN
ব্লুটুথ সক্রিয় জন্য। উত্স ।
ভবিষ্যতের অভিপ্রায় যা অন্যান্য অ্যাপ্লিকেশন ব্যবহার করতে পারে।
এবং এখানে একটি তৈরির উদাহরণ রয়েছে:
Intent intent = new Intent(context, MainActivity.class);
PendingIntent pendIntent = PendingIntent.getActivity(context, 0, intent, 0);
ট্যাক্সির বিশ্লেষণ
অভিপ্রায়
এজেন্টগুলি সাধারণত পরিষেবাগুলি শুরু করার জন্য ব্যবহৃত হয়। উদাহরণ স্বরূপ:
Intent intent = new Intent(CurrentClass.this, ServiceClass.class);
startService(intent);
আপনি ট্যাক্সি ডাকার সময় এমন হয়:
Myself = CurrentClass
Taxi Driver = ServiceClass
মুলতুবি থাকা
আপনার এই জাতীয় কিছু ব্যবহার করতে হবে:
Intent intent = new Intent(CurrentClass.this, ServiceClass.class);
PendingIntent pi = PendingIntent.getService(parameter, parameter, intent, parameter);
getDataFromThirdParty(parameter, parameter, pi, parameter);
এখন এই তৃতীয় পক্ষটি আপনার হয়ে পরিষেবাটি শুরু করবে। বাস্তব জীবনের উপমাটি হলেন উবার বা লিফ্ট যারা উভয়ই ট্যাক্সি সংস্থা।
আপনি উবার / লিফ্টে যাত্রার অনুরোধ পাঠান। তারপরে তারা এগিয়ে যাবে এবং আপনার পক্ষ থেকে তাদের একজন ড্রাইভারকে কল করবে।
অতএব:
Uber/Lyft ------ ThirdParty which receives PendingIntent
Myself --------- Class calling PendingIntent
Taxi Driver ---- ServiceClass
একটি পেন্ডিং ইন্টেন্ট হ'ল একটি টোকেন যা আপনি অন্য কোনও অ্যাপ্লিকেশনকে (যেমন নোটিফিকেশন ম্যানেজার, অ্যালার্ম ম্যানেজার বা তৃতীয় পক্ষের অ্যাপ্লিকেশন) দেবেন, যা এই অন্যান্য অ্যাপ্লিকেশনটিকে কোডের একটি পূর্বনির্ধারিত টুকরোগুলি কার্যকর করার জন্য আপনার অ্যাপ্লিকেশনের অনুমতিগুলি ব্যবহার করার অনুমতি দেয়। একটি মুলতুবি উদ্দেশ্য হিসাবে সম্প্রচার সঞ্চালনের জন্য তাই পেন্ডিং ইন্টেন্ট.জেটব্রোডকাস্ট () এর মাধ্যমে একটি পেন্ডিং ইন্টেন্ট পান। একটি মুলতুবি অভিপ্রায় মাধ্যমে কোনও ক্রিয়াকলাপ সম্পাদন করার জন্য আপনি কার্যকলাপটি পেন্ডিং ইন্টেন্ট.জেটঅ্যাক্টিভিটি () এর মাধ্যমে গ্রহণ করেন।
একটি উদ্দেশ্য কি?
অ্যানড্রয়েডের একটি উদ্দেশ্য হ'ল একটি নির্দিষ্ট কমান্ড যা আপনাকে অ্যান্ড্রয়েড ওএসে নির্দিষ্ট কিছু করার জন্য একটি আদেশ পাঠাতে দেয়। এটিকে কার্যকর করার মতো একটি ক্রিয়া হিসাবে ভাবুন। এমন অনেকগুলি ক্রিয়া রয়েছে যা ইমেল প্রেরণ, বা কোনও ইমেলটিতে কোনও ফটো সংযুক্তি এমনকি একটি অ্যাপ্লিকেশন প্রবর্তন করা যায়। একটি অভিপ্রায় তৈরির যৌক্তিক কর্মপ্রবাহ সাধারণত: উদ্দীপনা খ। উদ্দেশ্য বিকল্পগুলি যুক্ত করুন -> প্রাক্তন। আমরা কোন ধরণের অভিপ্রায় ওএসে প্রেরণ করছি বা সেই অভিপ্রায় সম্পর্কিত কোনও বৈশিষ্ট্য যেমন কোনও পাঠ্য স্ট্রিং বা উদ্দেশ্যটির সাথে পাশ করা কিছু। ইন্টেন্ট চালানো
বাস্তব জীবনের উদাহরণ: আসুন আমি সকালে উঠি এবং ওয়াশরুমে যাওয়ার জন্য "অন্তর্ভুক্ত" করি। আমাকে প্রথমে ওয়াশরুমে যাওয়ার বিষয়ে ভাবতে হবে, তবে সত্যই আমাকে ওয়াশরুমে নিয়ে যাওয়া উচিত নয়। এরপরে আমার মস্তিষ্ককে প্রথমে বিছানা থেকে উঠতে, তারপরে ওয়াশরুমে হাঁটতে হবে এবং তারপরে ছেড়ে দিতে হবে, তারপর গিয়ে আমার হাত ধুয়ে ফেলুন, তারপরে যান এবং আমার হাত মুছুন। একবার আমি জানতে পারছি আমি কোথায় যাচ্ছি আমি শুরু করার জন্য আদেশটি পাঠিয়ে দিই এবং আমার শরীরটি পদক্ষেপ নেয়।
মুলতুবি কী আছে?
বাস্তব জীবনের উদাহরণ অব্যাহত রেখে বলা যাক আমি গোসল করতে চাই তবে আমি দাঁত ব্রাশ করে প্রাতঃরাশ খাওয়ার পরে গোসল করতে চাই। সুতরাং আমি জানি আমি কমপক্ষে 30-40 মিনিট পর্যন্ত বৃষ্টি করব না। আমার মাথায় এখনও আছে যে আমার জামাকাপড় প্রস্তুত করা উচিত এবং তারপরে সিঁড়িটি ফিরে বাথরুমে চলে আসা, পরে জামা কাপড় পরে ঝরনা। তবে 30-40 মিনিট না পেরে এটি ঘটবে না not আমার এখন শাওয়ার করার জন্য একটি লন্ডন ইন্টেন্ট রয়েছে। এটি 30-40 মিনিটের জন্য পেন্ডিং।
এটি একটি পেন্ডিং ইন্টেন্ট এবং নিয়মিত ইন্টেন্টের মধ্যে পার্থক্য is কোনও মুলতুবি ইন্টেন্ট ছাড়া নিয়মিত ইন্টেন্টস তৈরি করা যায় তবে পেন্ডিং ইন্টেন্ট তৈরি করতে আপনার প্রথমে নিয়মিত ইনটেন্ট সেটআপ থাকা দরকার।
PendingIntent
মূলত এমন একটি বস্তু যা অন্য একটি বস্তুকে আবৃত করে Intent
। তারপরে এটি কোনও বিদেশী অ্যাপ্লিকেশনটিতে পৌঁছে দেওয়া যেতে পারে যেখানে আপনি সেই অ্যাপ্লিকেশনটিকে অপারেশন করার অধিকার প্রদান করছেন, অর্থাত: এটি আপনার নিজের অ্যাপ্লিকেশন প্রক্রিয়া (একই অনুমতি এবং পরিচয়) থেকে কার্যকর করা হয়েছে এমন অভিপ্রায়টি কার্যকর করুন। সুরক্ষার কারণে আপনার সর্বদা জড়িত হওয়ার চেয়ে কোনও পেন্ডিং ইন্টেন্টে সুস্পষ্ট অভিপ্রায়গুলি পাস করা উচিত।
PendingIntent aPendingIntent = PendingIntent.getService(Context, 0, aIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
একটি সহজ ভাষায়,
1. সম্পাদন করার জন্য একটি উদ্দেশ্য এবং লক্ষ্য ক্রিয়াকলাপের বর্ণনা। প্রথমে আপনাকে একটি উদ্দেশ্য তৈরি করতে হবে এবং তারপরে আপনাকে একটি নির্দিষ্ট জাভা ক্লাসটি পাস করতে হবে যা আপনি চালাতে চান,
২. আপনি সেই জাভা শ্রেণিকে কল করতে পারেন যা আপনার ক্লাস অ্যাকশন ক্লাস যা পেন্ডিং ইন্টেন্ট.জেটঅ্যাক্টিভিটি, পেন্ডিং ইন্টেন্ট.জেট অ্যাক্টিভিটিস (কনটেক্সট, ইনটেন্ট, ইন্টেন্ট [], ইনট), পেন্ডিং ইন্টেন্ট.জেট ব্রডকাস্ট (কনটেক্সট, ইনটেন্ট, ইনট), এবং পেন্ডিং ইন্টেন্ট দ্বারা কল করতে পারেন। গেট সার্ভিস (প্রসঙ্গ, ইনটেন্ট, ইনট, ইনট); এখানে আপনি
লক্ষ্যটি দেখতে পেয়েছেন যা পদক্ষেপ 1 থেকে আসে 3.. আপনার মনে রাখা উচিত ... অন্য অ্যাপ্লিকেশনটির একটি পেন্ডিংইন্টেন্ট দেওয়ার মাধ্যমে আপনি এটি নির্দিষ্ট করে দিয়েছিলেন এমন ক্রিয়াকলাপ সম্পাদন করার অধিকার মঞ্জুর করছেন।
এটাই আমি দীর্ঘ পড়ার পরে শিখেছি।
একটি পেন্ডিং ইন্টেন্ট সাধারণ ইন্টেন্টকে এমন একটি টোকেন দিয়ে মুড়িয়ে দেয় যা আপনি আপনার অনুমতি নিয়ে কার্যকর করতে বিদেশী অ্যাপ্লিকেশনটিকে দেন। যেমন:
আপনার সঙ্গীত অ্যাপ্লিকেশনটির বিজ্ঞপ্তিটি
PendingIntent
ব্রডকাস্ট প্রেরণ করতে না দিলে সঙ্গীত বাজতে / বিরতি দিতে পারে না কারণ আপনার সঙ্গীত অ্যাপ্লিকেশনটিরREAD_EXTERNAL_STORAGE
অনুমতি রয়েছে যা বিজ্ঞপ্তি অ্যাপ্লিকেশনটি দেয় না। বিজ্ঞপ্তি একটি সিস্টেম পরিষেবা (তাই এটি একটি বিদেশী অ্যাপ্লিকেশন)।
এর নাম হিসাবে .. প্রস্তাবিত পেন্ডিং
আপনি এটি দুলতে পারেন (কিছু সময়ের পরে এটি করুন)। এটি অন্য অভিপ্রায় হিসাবে কাজ করে .. এটি আপনার পক্ষ থেকে সম্পাদন করার জন্য আপনার টাস্কটি অন্য কোনও অ্যাপকে দেওয়ার একটি উপায় giving
একটি মুলতুবি উদ্দেশ্য ভবিষ্যতে নেওয়া কোনও পদক্ষেপ নির্দিষ্ট করে। এটি আপনাকে ভবিষ্যতের উদ্দীপনাটি অন্য অ্যাপ্লিকেশনে প্রেরণ করতে দেয় এবং সেই অ্যাপ্লিকেশনটিকে সেই ইন্টেন্টটি কার্যকর করতে অনুমতি দেয় যেমন আপনার অ্যাপ্লিকেশনটির মতো একই অনুমতি রয়েছে, অবশেষে অভিপ্রায়টি চাওয়া হলে আপনার অ্যাপ্লিকেশনটি এখনও রয়েছে কিনা।
এটি এমন একটি টোকেন যা আপনি কোনও বিদেশী অ্যাপ্লিকেশনকে দেন যা বিদেশী অ্যাপ্লিকেশনটিকে কোডের একটি পূর্বনির্ধারিত টুকরোগুলি কার্যকর করার জন্য আপনার আবেদনের অনুমতিগুলি ব্যবহার করার অনুমতি দেয়।
আপনি যদি বিদেশী অ্যাপ্লিকেশনটিকে কোনও উদ্দীপনা দেন এবং সেই অ্যাপ্লিকেশনটি আপনার দেওয়া ইন্টেন্টটি প্রেরণ / সম্প্রচার করে, তারা নিজের অনুমতি নিয়ে ইন্টেন্টটি কার্যকর করবে। তবে আপনি যদি তার পরিবর্তে বিদেশী অ্যাপ্লিকেশনটিকে আপনার নিজের অনুমতি ব্যবহার করে তৈরি করা মুলতুবি ইন্টেন্ট দিয়ে থাকেন তবে সেই অ্যাপ্লিকেশনটি আপনার আবেদনের অনুমতি ব্যবহার করে অন্তর্ভুক্ত থাকা ইন্টেন্টটি কার্যকর করবে।
একটি মুলতুবি উদ্দেশ্য হিসাবে সম্প্রচার করতে তাই পেন্ডিং ইন্টেন্ট.জেটব্রোডকাস্ট () এর মাধ্যমে একটি পেন্ডিং ইন্টেন্ট পান। একটি মুলতুবি অভিপ্রায় মাধ্যমে কোনও ক্রিয়াকলাপ সম্পাদন করার জন্য আপনি কার্যকলাপটি পেন্ডিং ইন্টেন্ট.জেটঅ্যাক্টিভিটি () এর মাধ্যমে গ্রহণ করেন।
এটি একটি উদ্দেশ্যমূলক ক্রিয়া যা আপনি সম্পাদন করতে চান তবে পরবর্তী সময়ে। এটিকে বরফের উপর লক্ষ্য রাখুন। এটির প্রয়োজনীয়তার কারণটি হ'ল আপনার অ্যাপ্লিকেশনে একটি বৈধ প্রসঙ্গটি থেকে অবশ্যই একটি ইন্টেন্ট তৈরি করা এবং চালু করা উচিত তবে কিছু কিছু ক্ষেত্রে রয়েছে যখন আপনি ক্রিয়াকলাপটি চালাতে চান সেই সময়ে কোনওটি পাওয়া যায় না কারণ আপনি প্রযুক্তিগতভাবে অ্যাপ্লিকেশনের প্রসঙ্গে বাইরে আছেন ( দুটি সাধারণ উদাহরণ একটি বিজ্ঞপ্তি বা একটি ব্রডকাস্টার্সিভার থেকে ক্রিয়াকলাপ চালু করছে।
একটি পেন্ডিং ইন্টেন্ট তৈরি করে আপনি যে কার্যকলাপটি চালু করার জন্য ব্যবহার করতে চান তা বলুন, আপনি যে কাজটি করার প্রসঙ্গ রেখেছেন (অন্য ক্রিয়াকলাপ বা পরিষেবার অভ্যন্তরীণ থেকে) আপনি সেই অ্যাপ্লিকেশনটির কিছু অংশ প্রবর্তন করার জন্য সেই বিষয়টিকে বাহ্যিক কিছুতে পাস করতে পারেন can আপনার পক্ষ থেকে.
একটি পেন্ডিং ইন্টেন্ট অ্যাপ্লিকেশনগুলির প্রক্রিয়াটি শেষ হওয়ার পরেও কাজ করার জন্য একটি উপায় সরবরাহ করে। এটি লক্ষণীয় গুরুত্বপূর্ণ যে অ্যাপ্লিকেশনটি পেন্ডিং ইন্টেন্টকে হত্যা করার পরেও, সেই উদ্দেশ্যটি এখনও চালানো যেতে পারে। এটি সম্পাদন করার জন্য একটি উদ্দেশ্য এবং লক্ষ্য ক্রিয়াকলাপের বর্ণনা। এই শ্রেণীর উদাহরণগুলি getActivity (প্রসঙ্গে, প্রেরণ, ইন্টেন্ট, ইনট), গেটব্রোডকাস্ট (কনটেক্সট, ইন্টি, ইনট, ইনট), গেট সার্ভিস (কনটেক্সট, ইনট, ইনটেন্ট, ইনট) দিয়ে তৈরি করা হয়েছে; প্রত্যাবর্তিত বস্তুটি অন্যান্য অ্যাপ্লিকেশনগুলিতে হস্তান্তর করা যায় যাতে তারা পরে আপনার পক্ষ থেকে আপনার দ্বারা বর্ণিত ক্রিয়াটি সম্পাদন করতে পারে।
অন্য অ্যাপ্লিকেশনটির একটি পেন্ডিং ইন্টেন্ট দেওয়ার মাধ্যমে আপনি এটি নির্ধারণ করেছেন এমন অপারেশন সম্পাদনের অধিকার মঞ্জুর করছেন যেন অন্য অ্যাপ্লিকেশনটি নিজেই ছিলেন (একই অনুমতি এবং পরিচয় সহ)। যেমন, আপনি কীভাবে পেন্ডিং ইন্টেন্টটি তৈরি করেন সে সম্পর্কে আপনার যত্নবান হওয়া উচিত: প্রায়শই, উদাহরণস্বরূপ, আপনি যে বেস ইন্টেন্ট সরবরাহ করেন তা অবশেষে সেখানে প্রেরণ করা হয়েছে এবং অন্য কোথাও নয় তা নিশ্চিত করার জন্য উপাদানটির নামটি আপনার নিজের উপাদানগুলির একটিতে স্পষ্টভাবে সেট করা থাকবে।
একটি পেন্ডিং ইন্টেন্ট নিজেই কেবল এটি পুনরুদ্ধার করতে ব্যবহৃত মূল ডেটা বর্ণনা করে সিস্টেম দ্বারা রক্ষণ করা একটি টোকেনের রেফারেন্স। এর অর্থ হ'ল, এমনকি যদি তার নিজস্ব প্রয়োগের প্রক্রিয়াটি মারা যায় তবে পেন্ডিং ইন্টেন্ট নিজেই দেওয়া অন্যান্য প্রক্রিয়াগুলি থেকে ব্যবহারযোগ্য থাকবে। পরে যদি অ্যাপ্লিকেশন তৈরি করে একই ধরণের পেন্ডিং ইন্টেন্ট (একই ক্রিয়াকলাপ, একই উদ্দিষ্ট ক্রিয়া, ডেটা, বিভাগ এবং উপাদানগুলি এবং একই পতাকাগুলি) পুনরুদ্ধার করা হয়, তবে এটি এখনও বৈধ যদি একই টোকেনকে উপস্থাপন করে একটি পেন্ডিংইন্টেন্ট পাবেন এবং তা করতে পারে এটি মুছে ফেলার জন্য এইভাবে কল করুন ()