أرقى طريقة لاستخدام برودكاسستير في المفرد والمزيد
-
03-10-2019 - |
سؤال
لديّ مفردة تخزن بعض المعلومات الحكيمة حول مستخدم طلبي. في الوقت الحالي ، يقوم بتخزين تسجيل الدخول للمستخدم وموقع المستخدم.
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>
عنصر.