কেউ কি জানেন কখন / কখন এই পার্সলেবলের পদ্ধতিটি বলা হয়?
@Override
public int describeContents() {
return 0;
}
এটি ওভাররাইড করতে হবে। তবে আমি কি এর সাথে দরকারী কিছু করার কথা বিবেচনা করব?
উত্তর:
Parcelable
বলা হয় একটি ধ্রুবক সংজ্ঞায়িত CONTENTS_FILE_DESCRIPTOR
যা describeContents()
বিটমাস্ক রিটার্ন মান তৈরি করতে ব্যবহার করা হয়।
জন্য বর্ণনা CONTENTS_FILE_DESCRIPTOR
মধ্যে এপিআই সুত্র হল:
বিবরণকন্টেন্টস () এর সাথে ব্যবহারের জন্য বিট মাস্কগুলি: প্রতিটি বিট মার্শাল হয়ে গেলে এমন এক ধরণের অবজেক্টের প্রতিনিধিত্ব করে যার সম্ভাব্য বিশেষ তাত্পর্য রয়েছে।
সত্যিই যার অর্থ: আপনি করা দরকার হয় তাহলে FileDescriptor
আপনি / নির্দিষ্ট করতে হবে উচিত Parcelable মধ্যে অবজেক্ট CONTENTS_FILE_DESCRIPTOR
) describeContents ফেরত মান (, মানে ওই "হিসেবে বিশেষ বস্তু " (মধ্যে describeContents()
এর বিবরণ) তারা সত্যিই বলতে চাইছেন: FileDescriptor
।
এই পুরো পার্সেলেবল কার্যকারিতা অসম্পূর্ণ দেখাচ্ছে (পড়ুন: খারাপ ডিজাইন রয়েছে)। ডক্সে আরও একটি অদ্ভুত জিনিস রয়েছে:
পার্সেবল ইন্টারফেস প্রয়োগকারী ক্লাসগুলির CREATOR নামে একটি স্ট্যাটিক ফিল্ডও থাকতে হবে যা পার্সেলেবল প্রয়োগকারী একটি উপাদান reat ক্রিয়েটর ইন্টারফেস
মানব পাঠযোগ্য আকারে সংজ্ঞায়িত বিধি দ্বারা একাধিক উত্তরাধিকার প্রয়োগ? :-)
দেখে মনে হচ্ছে এটি সি ++ প্রোগ্রামার ডিজাইন করেছে Parceable
এবং এক পর্যায়ে তিনি বুঝতে পেরেছিলেন: ওহ, অভিশাপ, জাভাতে একাধিক উত্তরাধিকার নেই ... :-)
describeContents()
0 টি ফিরে আসার উচিত যখনই এটির "এতে কোনও বিশেষত্ব নেই" । যা আসলে কিছুই ব্যাখ্যা করে না। আপনার ব্যাখ্যা এত পরিষ্কার!
CONTENTS_FILE_DESCRIPTOR
(আসলে hasFileDescriptors()
আমি অ্যান্ড্রয়েড সোর্স কোডে খুঁজে পেতে সক্ষম ছিল পদ্ধতি), নিক্ষেপ হয় IllegalArgumentException
মধ্যে ActivityManagerService
: একটি বার্তা সঙ্গে "/ ইন্টেন্ট / অপশন বান্ডেল পাস ফাইল বর্ণনাকারী" থেকে "সম্ভব ফাঁস ফাইল বর্ণনাকারী প্রত্যাখ্যান" । আমার বোধগম্যতা এটি সুরক্ষা কারণে (অন্য অ্যাপের অনুমতি ব্যবহার করে)। আমি ভুল হলে শুধরে.
কেবল দুটি সম্ভাব্য মান, 0 বা CONTENTS_FILE_DESCRIPTOR
আপনি যদি পোলোকে সিরিয়ালাইজ করছেন, এই মানটি সর্বদা 0 হওয়া উচিত, CONTENTS_FILE_DESCRIPTOR পার্সেলফিলিডিস্ক্রিপ্টারের জন্য সংরক্ষিত থাকে , যা * ইউনিক্স সিস্টেমে কোনও ফাইল বর্ণনাকারী (FD) সিরিয়ালাইজ করতে পারে।
অ্যান্ড্রয়েড কাঠামো থেকে, এক্টিভিটি ম্যানেজারসেবা.জভাতে একমাত্র ব্যবহার ঘটে:
//ActivityManagerService.java
public int startActivityIntentSender(IApplicationThread caller,
IntentSender intent, Intent fillInIntent, String resolvedType,
IBinder resultTo, String resultWho, int requestCode,
int flagsMask, int flagsValues) {
// Refuse possible leaked file descriptors
if (fillInIntent != null && fillInIntent.hasFileDescriptors()) {
throw new IllegalArgumentException("File descriptors passed in Intent");
}
//...
}
ইন্টান্ট.জাভা ফাইলডেস্ক্রিপ্টর () এর বান্ডেল থেকে এসেছে জাজা ফাইলডেস্ক্রিপ্টর ()। এবং বান্ডেলটি এমএম্যাপ (হ্যাশম্যাপ) বা এমপ্যারসেলডডাটা (পার্সেল) এর সমস্ত ডেটা পুনরায় পাঠাবে। আমরা অভিপ্রায়টি নির্ধারণ করব hasফাইসডিসিপেক্টরগুলি () কেবলমাত্র পার্সেল / পার্সেবল বর্ণনামূলক কনটেন্টগুলি () মোড়ানো।
যদিও, সম্ভবত এটি বর্ণনার সামগ্রীগুলির জন্য একমাত্র ব্যবহার (): এটি ইনটেন্ট পাস থেকে ফাইলডেস্ক্রিপ্টর ফিল্টার করতে ব্যবহার করে ...