English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
هذه المقالة تتحدث عن كيفية محاكاة وظيفة زر Home في برمجة Android. أشارككم هذا للحصول على إفادة، وفقًا للتفاصيل التالية:
قم بإنشاء طريقة تشبه تلك التي يستخدمها QQ عند الضغط على زر العودة دون إزالة Activity (أي عدم إجراء Activity.finish()، لا يتم استدعاء onDestroy من قبل النظام)، بل تشبه الضغط على زر Home، مما يجعل Activity تشبه "التوقف" (أي استدعاء onPause فقط، ثم onDestroy).
كود كما يلي:
public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK){ Intent intent = new Intent(Intent.ACTION_MAIN); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // ملاحظة intent.addCategory(Intent.CATEGORY_HOME); this.startActivity(intent); return true; } return super.onKeyDown(keyCode, event); }
النقطة الرئيسية:intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); هذا يجب أن يكون، لأن launchMode الافتراضي لـ Activity هو standard، وإذا لم يتم إضافة هذا الرمز فإنه سيتم إنشاء Activity جديد ويتم وضعه في نفس Task كما هو الحال مع Activity الحالية. إليك شرح FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_NEW_TASK الرمز
عندما يحتوي على علامة FLAG_ACTIVITY_NEW_TASK على هدف Intent المرسل إلى startActivity()، يقوم النظام بالبحث عن task المختلفة عن activity الحالية للتفعيل. إذا كانت خاصية affinity لـ activity التي سيتم تفعيلها مختلفة عن خاصية affinity لكل من المهام الحالية، يقوم النظام بإنشاء task جديد يحتوي على تلك خاصية affinity، ويتم وضع activity في هذا stack الجديد؛ وإلا يتم وضع activity في stack يحتوي على نفس خاصية affinity.
قراء مهتمون بمزيد من المعلومات حول أندرويد يمكنهم مراجعة موضوعات هذا الموقع: 'دليل البدء في تطوير أندرويد'، 'نصائح التشخيص والتحقق من الأخطاء الشائعة في أندرويد'، 'نصائح حول كيفية تعامل مع وسائط المتعددة في أندرويد (الصوت، الفيديو، التسجيل وما إلى ذلك)'، 'ملخص استخدام المكونات الأساسية في أندرويد'، 'ملخص تقنيات الرؤية في أندرويد'، 'ملخص تقنيات التخطيط في أندرويد'، و 'ملخص استخدام التحكمات في أندرويد'.
آمل أن يساعدكم هذا المقال في تصميم برامج أندرويد.
البيان: محتوى هذا المقال تم جمعه من الإنترنت، وله حقوق الملكية للمالك الأصلي، يتم جمعه من قبل المستخدمين على الإنترنت بشكل طوعي وتحميله بشكل مستقل، ويتمتع هذا الموقع بملكية غير مكتسبة، ولا يتم تعديل المحتوى بشكل إنساني، ولا يتحمل الموقع أي مسؤولية قانونية مرتبطة. إذا وجدت محتوى مشكوك فيه من حيث حقوق النسخ، فيرجى إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (أثناء إرسال البريد الإلكتروني، يرجى استبدال #بـ@) للإبلاغ، وتقديم الدليل المطلوب، وإذا تم التحقق من صحة الإبلاغ، فإن هذا الموقع سيرحل على الفور المحتوى المشكوك فيه الذي يشتبه فيه النسخ غير القانوني.