আমার অ্যাপে স্ট্রিক্টমোড সম্পর্কিত সমস্যা রয়েছে এবং কোড স্নিপেট যুক্ত হয়েছে যা মূলত স্ট্রাইকডমহেল্পারকে অক্ষম করে
নেটওয়ার্কিং বাগটি ঠিক করুন।
কোন পদ্ধতিটি অগ্রাধিকারযুক্ত .. বা মূলত তারা কি একইভাবে করছে?
@TargetApi
এবং @SuppressLint
একই মূল প্রভাব রয়েছে: তারা লিন্ট ত্রুটি দমন করে।
পার্থক্যটি হ'ল @TargetApi
প্যারামিটারের মাধ্যমে আপনি ঘোষণা করেছেন যে আপনি আপনার কোডে কোন এপিআই স্তরটি সম্বোধন করেছেন, যাতে আপনি পরে এপিআই স্তরের উল্লেখ করা থেকে আরও নতুন কিছু উল্লেখ করার পদ্ধতিটি পরিবর্তন করে যদি ত্রুটিটি আবার পপ আপ হতে পারে @TargetApi
।
উদাহরণস্বরূপ, ধরুন যে, StrictMode
আপনার নেটওয়ার্কিং বাগ সম্পর্কে অভিযোগগুলি ব্লক করার পরিবর্তে আপনি AsyncTask
অ্যান্ড্রয়েডের নতুন সংস্করণগুলিতে সিরিয়ালযুক্ত হওয়ার বিষয়টি নিয়ে কাজ করার চেষ্টা করছেন । নতুন ডিভাইসে থ্রেড পুলে অপ্ট করতে এবং পুরানো ডিভাইসে ডিফল্ট মাল্ট্রিথ্রেড আচরণ ব্যবহার করার জন্য আপনার কোডে এই জাতীয় পদ্ধতি রয়েছে:
@TargetApi(11)
static public <T> void executeAsyncTask(AsyncTask<T, ?, ?> task,
T... params) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
}
else {
task.execute(params);
}
}
এর @TargetApi(11)
অর্থ হ'ল লিন্ট যদি সনাক্ত করে যে আমি আমার থেকে আরও নতুন কিছু ব্যবহার করছি android:minSdkVersion
, তবে এপিআই লেভেল 11 পর্যন্ত, লিন্ট অভিযোগ করবে না। এই ক্ষেত্রে, যে কাজ করে। যাইহোক, আমি এই পদ্ধতিটি এমন কিছু রেফারেন্সের জন্য সংশোধন করেছি যা এপিআই লেভেল 14 পর্যন্ত যোগ করা হয়নি, তবে লিঙ্ক ত্রুটিটি আবার উপস্থিত হবে, কারণ আমার @TargetApi(11)
টীকায় বলা আছে যে আমি কেবলমাত্র এপিআই লেভেল 11 এবং তারপরে নীচে কাজ করার জন্য কোডটি স্থির করেছি , না এপিআই স্তর 14 এবং উপরে নীচে ।
ব্যবহার করে @SuppressLint('NewApi')
, আমার কোড রেফারেন্সগুলি এবং আমার কোড হ্যান্ডেল করার জন্য কী সেট আপ করা হয়েছে তা বিবেচনা না করেই আমি কোনও API স্তরের জন্য লিন্ট ত্রুটি হারাব ।
অতএব, @TargetApi
পছন্দসই টীকাটি হ'ল, কারণ এটি আপনাকে বিল্ড সরঞ্জামগুলিকে "ঠিক আছে, আমি এই বিভাগের সমস্যাগুলি ঠিক করেছি" আরও সূক্ষ্ম ধরণের ফ্যাশনে বলার অনুমতি দেয়।