سؤال

لدي التطبيق الذي يدور حول النشاط الرئيسي (القائمة الرئيسية).يوجد في كل تطبيق آخر عنصر قائمة خيار يوجه إلى هذا النشاط.

في البداية ، بدأت دائما نشاطا رئيسيا جديدا عند تحديد هذا العنصر.باستخدام حزمة النية ، أخبرت النشاط الرئيسي أن بعض التهيئة التي أقوم بها في بداية جديدة لم تكن ضرورية.

ومع ذلك ، لم يعجبني السلوك العام تماما.لقد عثرت عليها android:launchMode="SingleTask" ويبدو أن هذا يساعد:الآن لا أقوم بإعادة إنشاء نشاط القائمة الرئيسية طوال الوقت;أيضا ، إذا ضغطت على زر "رجوع" ، أعود مباشرة إلى الشاشة الرئيسية.هذا يشعر لطيف جدا مثل القائمة "الرئيسية" المناسبة.

مشكلتي الآن هي هذه:إذا قمت بتشغيل نشاط آخر لتطبيقي ، فاضغط على زر الصفحة الرئيسية ثم أعد فتح تطبيقي (على سبيل المثال.باستخدام "التطبيقات الأخيرة") ، ثم لا أعود إلى النشاط الأخير ، ولكن إلى النشاط الرئيسي.يتم تدمير النشاط الآخر.

أي أفكار كيف يمكنني تنفيذ سلوك SingleTask دون أن تكون قادرة على العودة إلى نشاط واحد فقط?

هل كانت مفيدة؟

المحلول

إذا تم الإعلان عن الأنشطة الأخرى الخاصة بك عادة مع الإعدادات الافتراضية النشاط في الروبوت ، ثم العودة إلى التطبيق الخاص بك يجب أن يأخذك إلى نفس النشاط حيث توقفت (باستخدام زر الأجهزة الرئيسية)

ولكن تذكر أن نظام أندرويد يقتل التطبيقات عندما يتطلب موارد النظام.لذلك قد يكون قد قتل التطبيق الخاص بك عندما ذهبت إلى التطبيق الآخر.ثم عندما تعود إلى تطبيقك ، سيتم إعادة تشغيل نشاط المشغل الافتراضي ، وهو نشاط القائمة الخاص بك.

للعودة إلى النشاط الرئيسي من أي نشاط ، قم بذلك:

public static void goHome(Context context) {
        final Intent intent = new Intent(context, HomeActivity.class); //give name of your main activity class here
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        context.startActivity(intent);
    }

سيؤدي ذلك إلى مسح مكدس النشاط وإعادتك إلى نشاطك الرئيسي.كما أعلنت سينغليتوب ، فإنه سيجلب النشاط الرئيسي الحالي إلى المقدمة.نية العلم.سيؤدي العلم إلى إزالة جميع الأنشطة الموجودة في المكدس أعلى النشاط الرئيسي.(أفترض أنك ضمن نفس التطبيق).

الآن ، تحتاج جميع أنشطتك الأخرى فقط إلى تضمين زر يستدعي مستمع النقر الطريقة goHome();

من نشاطك الرئيسي ، إذا ضغطت على زر رجوع الجهاز ، فيجب أن يخرج من تطبيقك.

نصائح أخرى

لماذا لا ندعو إنهاء () على الأنشطة التي تم إنشاؤها بواسطة النشاط الرئيسي?بهذه الطريقة تعود إلى النشاط الرئيسي ، دون إنشاء نشاط جديد...

أعتقد أنه يجب عليك حفظ حالة نشاطك قبل بدء نشاط آخر ، ثم استئناف نشاطك كلما عدت إلى آخر نشاط.انظر دورة حياة النشاط من الروبوت http://developer.android.com/guide/topics/fundamentals/activities.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top