سؤال

لديّ مفردة تخزن بعض المعلومات الحكيمة حول مستخدم طلبي. في الوقت الحالي ، يقوم بتخزين تسجيل الدخول للمستخدم وموقع المستخدم.

1) تم العثور على الموقع عبر الخدمة. في الوقت الحالي ، تشير الخدمة إلى Singleton مباشرة إلى وضع خط الطول والعرض فيه. أرغب في استخدام A Broadcastreceiver لإرسال بث يسمعه Singleton ويستخدمه لتحديث القيم بدلاً من ذلك.

ومع ذلك ، لتسجيل Broadcastreceiver ، أحتاج إلى سياق في بلدي المفرد. ما هي أفضل طريقة لتحقيق ما أريده. هل ربما ليس الكائن المناسب هو الكائن المناسب؟

2) أيضًا ، ما هي المشكلات التي أنظر إليها باستخدام مفردة؟ أفترض أن Android قد يستعيد هذه الذاكرة في أي وقت معين (والتي من الواضح أنها سيئة) ؛ فكيف يمكنني منع ذلك؟ هل يمر في سياق الطلب وتخزينه في متغير عضو هذا؟

تنص وثائق Android على: "ولكن ، دورة حياة ثابتة ليست خاضعة لسيطرتك ؛ لذا للالتزام بنموذج دورة الحياة ، يجب أن تبدأ فئة التطبيق هذه الأشياء الثابتة في onCreate () و OnTermatin ) طرق فئة التطبيق ، "لكنني لست متأكدًا تمامًا من كيفية تحقيق ذلك.

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

المحلول

ومع ذلك ، لتسجيل Broadcastreceiver ، أحتاج إلى سياق في بلدي المفرد. ما هي أفضل طريقة لتحقيق ما أريده. هل ربما لا يكون الكائن المناسب؟

إن "أفضل طريقة" هي عدم فعل ما تفعله. يرجى تسجيل أ BroadcastReceiver من Activity, Service, ، أو يمكن و Application. أنت يجب unregister هذا BroadcastReceiver عندما Activity, Service, ، أو Application دمرت.

أفترض أن Android قد يستعيد هذه الذاكرة في أي وقت معين (والتي من الواضح أنها سيئة) ؛ فكيف يمكنني منع ذلك؟

لم تكن. يحتفظ Android بالحق في إنهاء العملية في أي وقت (على سبيل المثال ، لاستعادة الذاكرة). سيقوم قتلة المهام على Android 2.1 و Prevent بإنهاء عمليتك في أي وقت. بمجرد تدمير جميع مكونات التطبيق الخاص بك ، يجوز Android إعادة تدوير عمليتك في أي وقت ، مما يزيل الكومة في نفس الوقت. وهلم جرا.

فقط ضع الأشياء في الذاكرة التي لا تمانع في الخسارة.

من الأفضل التفكير في "تطبيقك" كسلة من المكونات المربوطة بشكل فضفاض ، وليس ككيان متجانس.

هل يمر في سياق الطلب وتخزينه في متغير عضو هذا؟

رقم.

تنص وثائق Android على: "ولكن ، دورة حياة ثابتة ليست خاضعة لسيطرتك ؛ لذا للالتزام بنموذج دورة الحياة ، يجب أن تبدأ فئة التطبيق هذه الأشياء الثابتة في onCreate () و OnTermatin ) طرق فئة التطبيق ، "لكنني لست متأكدًا تمامًا من كيفية تحقيق ذلك.

إنشاء فئة فرعية من Application والإشارة في البيان إلى أن Android يجب أن يستخدمه ، عبر android:name ميزة على <application> عنصر.

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