الانشطه

الإعلانات

الانشطه

 

 

 

الانشطه

“فئة النشاط العامه” public class Activity
extends  ContextThemeWrapper implements LayoutInflater.Factory2, Window.Callback, KeyEvent.Callback, View.OnCreateContextMenuListener, ComponentCallbacks2

java.lang.Object
 android.content.Context

 android.content.ContextWrapper  ↳  
 android.view.ContextThemeWrapper  ↳      

 android.app.Activity  ↳            

 

 

      فئات فرعية معروفة ومباشرة Known direct subclasses
AccountAuthenticatorActivity, ActivityGroup, AliasActivity, ExpandableListActivity, ListActivity, NativeActivity

 فئات فرعية معروفة وغير مباشرة Known indirect subclasses
LauncherActivity, PreferenceActivity, TabActivity

 


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

بإنشاء نافذة لك، حيث يمكنك وضع واجهة المستخدم بها بإستخدام (setContentView(View. بينما يتم تقديم الانشطه إلى المستخدم..

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

أو مضمنة بداخل نشاط آخر (بإستخدام ActivityGroup). هناك دالتان،تقوم بتنفيذها كافة الفئات الفرعية من النشاط تقريباً:

  • (onCreate(Bundle هو المكان الذي تقوم فيه بتهيئة نشاطك.

الأهم من ذلك، هنا سوف تقوم عادةً بإستدعاء (setContentView(int مع مصدر مخطط يحدد واجهة المستخدم الخاصة بك..

ويستخدم (findViewById(int لإستيراد الودجت في واجهة المستخدم، التي تحتاج إلى التفاعل معها برمجياً.

  • ()onPause هو المكان الذي تتعامل فيه مع المستخدم الذي يغادر نشاطك.

الأهم من ذلك، أي تغييرات قام بها المستخدم في هذه المرحلة يجب إجراؤها (عادة إلى ContentProvider الذي يحمل البيانات).

ليكون إستخدام ()Context.startActivity مفيداً، يجب أن تحتوي كافة فئات النشاط على إعلان متطابق لعنصر النشاط <activity>

في ملف الحزمة AndroidManifest.xml الخاص بها.

الموضوعات التي تمت تغطيتها هنا:

  1. الشظايا
  2. دورة حياة النشاط
  3. تغييرات التكوين
  4. بدء الأنشطه والحصول على نتائج
  5. حالة الحفظ المستمر
  6. الأذونات
  7. دورة حياة العملية

 

أدلة المطور

تعتبر فئة النشاط، جزءاً مهماً من دورة حياة التطبيق الإجمالية، والطريقة التي يتم بها إطلاق الأنشطة وتفاعلها معاً..

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

 يرجى قراءة أدلة مطوري التطبيقات، أساسيات التطبيق و المهام والكومة الخلفيه.

يمكنك أيضاً العثور على مناقشة تفصيلية، حول كيفية إنشاء أنشطة في دليل مطوري الأنشطة.

 

 

 

 

الانشطه

 

الشظايا

يمكن للفئة الفرعية FragmentActivity الإستفادة من فئة الشظايا Fragment لتحسين نموذج الكود الخاص بهم.. الانشطه الانشطه

وبناء واجهات مستخدم، أكثر تطوراُ للشاشات الأكبر، والمساعدة في توسيع نطاق تلائم التطبيق بين الشاشات الصغيرة والكبيرة.

لمزيد من المعلومات حول إستخدام الشظايا، اقرأ دليل مطوري الشظايا. الانشطه الانشطه الانشطه

 

 

 

 

الانشطه

 

دورة حياة النشاط

تتم إدارة الأنشطة في النظام كـ كومة نشاط. عند بدء تشغيل نشاط جديد، يتم وضعه في الجزء العلوي من الكومه..

ويصبح النشاط الذي يتم تشغيله – يظل النشاط السابق، دوماً أسفله في الكومه، ولن يأتي إلى المقدمة مرة أخرى، حتى يتم إنهاء النشاط الجديد.

يحتوي النشاط في الأساس على أربع حالات:

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

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

النشاط المتوقف مؤقتاً، هو نشاط نشيط تماماً (أي، يحافظ على كل معلومات الحالة والأعضاء ويظل مرتبطاً بمدير النوافذ)..

ولكن يمكن أن يُدمر بواسطة النظام في حالات الإنخفاض الشديد في الذاكرة.

  • إذا تم حجب نشاطٍ ما بالكامل، بواسطة نشاطٍ آخر، فإنه يتم إيقافه.

سيستمر في الإحتفاظ بجميع معلومات الحالات والأعضاء، ومع ذلك، فإنه لن يكون مرئياً للمستخدم..

لذا تكون نافذته مخفيه، وغالباً ما يتم تدميرها بواسطة النظام، عند الحاجة إلى ذاكرة في مكانٍ آخر.

  • إذا تم إيقاف النشاط مؤقتاً أو تم إيقافه تماماً..

فيمكن للنظام إسقاط النشاط من الذاكرة، إما من خلال مطالبته بالإنتهاء، أو ببساطة إنهاء العملية.

عندما يتم عرضه مرة أخرى للمستخدم، يجب إعادة تشغيله بالكامل، و إستعادته إلى حالته السابقة.

 

يوضح الرسم التالي، مسارات الحالات المهمة للنشاط. تمثل المستطيلات دوال الإستدعاء التي يمكنك تنفيذها، لتنفيذ العمليات..

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

 

 

الانشطه

هناك ثلاث حلقات رئيسية قد تكون مهتماً بمراقبتها داخل نشاطك:

  • المدة الكاملة لنشاطٍ ما، تحدث بين الإستدعاء الأول لدالة (onCreate(Bundle خلال الإستدعاء النهائي الوحيد لدالة ()onDestroy .

سيقوم النشاط بكافة إعدادات الحالة “العامه” في دالة ()onCreate، و إطلاق جميع المصادر المتبقية في دالة ()onDestroy .

مثال، إذا كان يحتوي على مؤشر ترابط “تسلسل”، قيد التشغيل في الخلفية، لتنزيل البيانات من الشبكة..

 فقد ينشئ ذلك “التسلسل” مؤشر الترابط في دالة ()onCreate، ثم يوقف مؤشر الترابط في دالة ()onDestroy.

 

  • تحدث المدة المرئية لنشاطٍ ما، بين إستدعاء دالة ()onStart حتى إجراء الإستدعاء المطابق لـدالة ()onStop.

خلال هذا الوقت، يمكن للمستخدم رؤية النشاط على الشاشة، على الرغم من أنه قد لا يكون في المقدمة ويتفاعل مع المستخدم.

بين هاتين الدالتين، يمكنك الحفاظ على المصادر اللازمة، لإظهار النشاط للمستخدم.

مثال، يمكنك تسجيل BroadcastReceiver في ()onStart لمراقبة التغييرات، التي تؤثر على واجهة المستخدم الخاصة بك..

وإلغاء تسجيلها في دالة ()onStop عندما لا يرى المستخدم ما تقوم بعرضه.

يمكن إستدعاء دوال ()onStart و ()onStop عدة مرات، طالما يصبح النشاط مرئياً ومخفياً للمستخدم.

 

  •  مدة المقدمة، لنشاط ما تحدث بين إستدعاء ()onResume حتى الإستدعاء المطابق لدالة ()onPause.

خلال هذا الوقت، يكون النشاط، أمام جميع الأنشطة الأخرى ويتفاعل مع المستخدم.

يمكن أن ينتقل النشاط بشكلٍ متكرر، بين الحالات المستأنفة والمتوقفة مؤقتاً – على سبيل المثال..

عندما ينتقل الجهاز إلى وضع السكون، أو عندما يتم تسليم نتيجة النشاط، أو عندما يتم تسليم غرض جديد..

 لذلك يجب أن يكون الكود في هذه الدوال خفيف الوزن إلى حدٍ ما.

 

يتم تعريف دورة حياة النشاط بالكامل، من خلال دوال النشاط التالية.

كل هذه عبارة عن خطافات “hooks”، يمكنك تجاوزها للقيام بالعمل المناسب، عندما تتغير حالة النشاط.

ستقوم جميع الأنشطة بتنفيذ دالة الإنشاء للحزمه (onCreate (Bundle للقيام بالإعداد الأولي؛ كما ستقوم العديد منها أيضاً..

بتنفيذ دالة الإيقاف المؤقت ()onPause لإجراء التغييرات في البيانات، أو الإستعداد للتوقف عن التفاعل مع المستخدم.

يجب عليك دائماً إستدعاء الفئه الفائقة “superclass” عند تنفيذ هذه الدوال.

 

public class Activity extends ApplicationContext {
    protected void onCreate(Bundle savedInstanceState);

    protected void onStart();

    protected void onRestart();

    protected void onResume();

    protected void onPause();

    protected void onStop();

    protected void onDestroy();
}

 

 

الانشطه

بشكلٍ عام، تبدو الحركة خلال دورة حياة النشاط كما يلي:

الداله الوصف قابله للتدمير؟ الداله التاليه
()onCreate يتم إستدعاؤها عند إنشاء النشاط لأول مرة.

هذا هو المكان الذي يجب أن تقوم فيه بالإعداد الثابت العادي:

إنشاء طرق العرض، ربط البيانات بالقوائم، إلخ.

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

متبوعة دائماً بدالة ()OnStart.

لا ()onStart
()onRestart يتم إستدعاؤها بعد إيقاف نشاطك، قبل البدء به مرة أخرى.

متبوعة دائماً بدالة ()onStart.

لا ()onStart
()onStart يتم إستدعاؤها عندما يصبح النشاط مرئياً للمستخدم.

تليها ()onResume إذا كان النشاط في المقدمة، أو ()onStop  إذا أصبح مخفياً.

لا  ()onResume أو
() onStop
()onResume يتم إستدعاؤها عندما يبدأ النشاط في التفاعل مع المستخدم.

في هذه المرحلة، يكون نشاطك في الجزء العلوي من كومة النشاط..

 مع إدخالات المستخدم إليه.

متبوعة دائماً بدالة ()OnPause.

لا ()onPause
()onPause تستدعى عندما يكون النظام على وشك البدء في إستئناف نشاط سابق.
يُستخدم هذا عادةً لإجراء التغييرات الغير محفوظة، إلى البيانات المستمرة..

 وإيقاف الرسوميات المتحركة والأشياء الأخرى التي قد تستهلك وحدة المعالجة المركزية، وما إلى ذلك.

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

تكون متبوعة بدالة ()onResume إذا عاد النشاط مرة أخرى إلى الأمام..

 أو متبوعة بدالة ()onStop إذا أصبح غير مرئي للمستخدم.

Pre-Build.VERSION_CODES.HONEYCOMB ()onResume أو
()onStop
()onStop تستدعى عندما يكون النشاط غير مرئي للمستخدم..

 لأنه تم إستئناف نشاط آخر يغطي هذا النشاط.

قد يحدث هذا إما بسبب بدء نشاط جديد، حيث يتم عرض نشاط موجود أمام هذا النشاط..

أو بسبب تدمير هذا النشاط.

متبوعه بدالة ()onRestart إذا كان هذا النشاط يعود للتفاعل مع المستخدم..

 أو بدالة ()onDestroy إذا كان هذا النشاط سيبتعد.

نعم ()onRestart 
أو
()onDestroy
()onDestroy
الإستدعاء النهائي الذي تتلقاه قبل تدمير نشاطك.

يمكن أن يحدث هذا إما بسبب إنتهاء النشاط (شخص ما قام بإستدعاء دالة الإنهاء عليه ()finish)

أو لأن النظام يدمر مؤقتاً هذا المثيل من النشاط لتوفير مساحة.

يمكنك التمييز بين هذين السيناريوهين بإستخدام دالة ()isFinishing.

نعم لا شيء

 

 

الانشطه

 

لاحظ العمود “قابله للتدمير؟” في الجدول أعلاه – لتلك الدوال التي تم تمييزها بأنها قابلة للتدمير..ا

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

ولهذا، يجب عليك إستخدام الداله ()onPause لكتابة أي بيانات مستمره (مثل تعديلات المستخدم) إلى التخزين.

بالإضافة إلى ذلك، يتم إستدعاء الداله (Save.StaffInstanceState(Bundle قبل وضع النشاط في حالة الخلفية.. الانشطه الانشطه

مما يسمح لك بحفظ، أي حالة مثيل ديناميكية في نشاطك، في حزمة معينة، ليتم إستلامها لاحقاً في (onCreate (Bundle..

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

لاحظ أنه من المهم حفظ البيانات المستمرة في ()onPause بدلاً من

(onSaveInstanceState (Bundle لأن الداله الأخيرة ليست جزءاً من، إستدعاءات دورة الحياة، لذلك لن يتم إستدعاؤها في كل الظروف، كما هو موضح في وثائقها.

 

اعلم أن هذه الدلالات ستتغير قليلاً، بين التطبيقات التي تستهدف الأنظمة الأساسية، بدءاً من Build.VERSION_CODES.HONEYCOMB

مقابل تلك التي تستهدف الأنظمة الأساسية السابقة. بدءاً من إصدار هوني كومب، لا يكون التطبيق في حالة “القابلية للتدمير”..

حتى يتم إرجاع دالة ()onStop الخاصة به. يحدث هذا التأثير عندما قد يتم إستدعاء (onSaveInstanceState (Bundle ..

(قد يتم إستدعاؤها بأمان بعد دالة ()onPause ) ويسمح للتطبيق بالإنتظار بأمان حتى ()onStop لحفظ الحالة المستمرة.

 

بالنسبة إلى التطبيقات التي تستهدف الأنظمة الأساسية التي تبدأ بـ Build.VERSION_CODES.P سيتم دائماً إستدعاء (onSaveInstanceState(Bundle

بعد ()onStop، لذلك قد يقوم التطبيق بأداء معاملات الشظايا في دالة ()onStop بأمان وسيتمكن من حفظ الحالة المستمرة لاحقاً.

 

بالنسبة لتلك الدوال التي لم يتم وضع علامة عليها، بأنها قابلة للتدمير، لن يتم تدمير عملية النشاط من قبل النظام..

بدءاً من وقت إستدعاء الدالة ويستمر حتى بعد إرجاعها. وبالتالي، يكون النشاط في الحالة القابلة للتدمير..

على سبيل المثال، بين: بعد دالة ()onPause إلى بداية دالة ()onResume.

 

 

 

 

 

الانشطه

 

تغييرات التكوين

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

نظراً لأن النشاط هو الآلية الأساسية للتفاعل مع المستخدم، فإنه يحتوي على دعم خاص للتعامل مع تغييرات التكوين.

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

من خلال عملية دورة حياة النشاط العادية ()onPause و ()onStop و ()onDestroy حسب الإقتضاء.

إذا كان النشاط موجوداً في المقدمة، أو مرئياً للمستخدم، فسيتم إستدعاء ()onDestroy في تلك الحاله، ثم يتم إنشاء مثيل جديد للنشاط..

مع ما تم حفظه من الحالة السابقة savedInstanceState، التي أنشأها المثيل السابق من (onSaveInstanceState(Bundle.

يحدث هذا نظراً لأن أي مصدر تطبيق، بما في ذلك ملفات المخطط، يمكن أن تتغير بناءً على أي قيمة تكوين.

وبالتالي، فإن الطريقة الوحيدة الآمنة، للتعامل مع التغير في التكوين هي، إعادة إستيراد جميع المصادر، بما في ذلك المخططات، الرسوميات والسلاسل.

لأن الأنشطة يجب أن تعرف بالفعل، كيفية حفظ حالتها، وإعادة إنشاء نفسها من هذه الحالة، فهذه طريقة ملائمة، ليعيد النشاط تنشيط نفسه، بالتكوين الجديد.

في بعض الحالات الخاصة، قد ترغب في تجاوز إعادة تشغيل نشاطك، بناءً على نوع واحد أو أكثر من تغييرات التكوين.

يتم ذلك بإستخدام سمة android:configChanges في ملف الإيضاح الخاص به. بالنسبة لأية أنواع من تغييرات التكوين التي تصرح بأنك تتعامل معها هنا..

سوف تتلقى إستدعاء لدالة (onConfigurationChanged(Configuration للنشاط الحالي، بدلاً من إعادة تشغيله.

إذا كان تغيير التكوين يشتمل على أي شيء لا تتعامل معه، مع ذلك، فسيتم إعادة تشغيل النشاط، ولن يتم إستدعاء (onConfigurationChanged(Configuration.

 

 

 

 

 

الانشطه

 

بدء الأنشطة والحصول على نتائج

يتم إستخدام دالة (startActivity(Intent لبدء نشاط جديد، والذي سيتم وضعه في أعلى كومة النشاط.

يأخذ معطى واحد، غرض، والذي يصف النشاط المراد تنفيذه.

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

عندما ينتهي النشاط، فإنه يقوم بإرجاع الشخص الذي تم تحديده. للقيام بذلك، يمكنك إستدعاء الإصدار..

(startActivityForResult (Intent، int مع المعطى الثاني “int” عدد صحيح، المعرف في الإستدعاء.

ستعود النتيجة عبر دالة (onActivityResult(int ، int ، intent الخاصة بك.

عند إنهاء نشاط ما، يمكنه إستدعاء (setResult (int لإرجاع البيانات إلى أصلها “النشاط الأصلي”.

يجب دائماً توفير كود النتيجة، والذي يمكن أن يكون أحد النتائج القياسية RESULT_CANCELED أو RESULT_OK أو أي قيم مخصصة بدءاً من RESULT_FIRST_USER.

بالإضافة إلى ذلك، يمكن أن يرجع إختيارياً إلى غرض، يحتوي على أي بيانات إضافية يريدها.

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

في حالة فشل أي نشاط فرعي، لأي سبب من الأسباب (مثل التعطل)، سيحصل النشاط الرئيسي على نتيجة بالكود RESULT_CANCELED.

public class MyActivity extends Activity {
    ...

    static final int PICK_CONTACT_REQUEST = 0;

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
            // When the user center presses, let them pick a contact.
            startActivityForResult(
                new Intent(Intent.ACTION_PICK,
                new Uri("content://contacts")),
                PICK_CONTACT_REQUEST);
           return true;
        }
        return false;
    }

    protected void onActivityResult(int requestCode, int resultCode,
            Intent data) {
        if (requestCode == PICK_CONTACT_REQUEST) {
            if (resultCode == RESULT_OK) {
                // A contact was picked.  Here we will just display it
                // to the user.
                startActivity(new Intent(Intent.ACTION_VIEW, data));
            }
        }
    }
}

 

 

 

 

الانشطه

 

حالة الحفظ المستمر

عادة ما يكون هناك نوعان من الحالة المستمرة التي سيتعامل معها النشاط: بيانات مشتركة كالمستندات..

(عادة ما يتم تخزينها في قاعدة بيانات SQLite بإستخدام موفر المحتوى) وحالة داخلية مثل تفضيلات المستخدم.

بالنسبة إلى بيانات موفر المحتوى، نقترح إستخدام الأنشطة، لنموذج المستخدم “تحرير قيد التنفيذ” “edit in place”.

أي أن، أي تعديلات يقوم بها المستخدم، يتم إجراؤها على الفور بشكلٍ فعال، دون الحاجة إلى خطوة تأكيد إضافية.

دعم هذا النموذج، عادة ما يكون مسألة بسيطة، من إتباع قاعدتين:

  • عند إنشاء مستند جديد، يتم إنشاء “إدخال” أو “ملف” قاعدة البيانات الإحتياطية، على الفور.

مثال، إذا إختار المستخدم كتابة رسالة بريد إلكتروني جديدة، يتم إنشاء إدخال جديد لهذا البريد الإلكتروني..

في أقرب وقت، بمجرد البدء في إدخال البيانات، بحيث أنه إذا ذهب المستخدم إلى أي نشاط آخر..

بعد هذه المرحله، ستظهر هذه الرسالة في قائمة المسودات.

 

  • عندما يتم إستدعاء دالة ()onPause للنشاط، يجب أن يلتزم موفر المحتوى الإحتياطي أو الملف بأي تغييرات قام بها المستخدم.

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

حتى بصورة أكثر حدة، في الأوقات الرئيسية، خلال دورة النشاط الخاص بك:

مثال، قبل بدء نشاط جديد، قبل إنهاء نشاطك، و عندما يبدل المستخدم بين حقول الإدخال، الخ.

 

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

(لأن موارد النظام مطلوبة في مكان آخر)، في أي وقت، بعد أن يتم إيقافه مؤقتاً. لاحظ أن هذا يعني..

أن ضغط المستخدم على زر الرجوع من نشاطك لا يعني “الإلغاء” – بل يعني مغادرة النشاط ومحتوياته الحالية محفوظة.

يجب توفير إلغاء التعديلات “التراجع عن التعديل”، في أي نشاط من خلال آلية أخرى، مثل خيار “العودة” أو “التراجع” بشكلٍ صريح.

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

توفر فئة النشاط أيضاً، واجهة برمجة تطبيقات، لإدارة حالة الإستمرار الداخلية المرتبطة بنشاطٍ ما.

يمكن إستخدام هذه، كمثال، لتذكر العرض الأولي، المفضل للمستخدم في التقويم (عرض اليوم أو عرض الأسبوع)..

أو الصفحة الرئيسية الإفتراضية للمستخدم في متصفح الويب.

تتم إدارة الحالة المستمرة للنشاط بإستخدام الدالة (getPreferences(int، مما يسمح لك بإستيراد وتعديل مجموعة من أزواج “اسم/قيمة” المرتبطة بالنشاط.

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

يمكنك إستخدام الداله التابعه ()Context.getSharedPreferences لإستيراد كائن تفضيلات مخزَّن تحت اسم محدد.

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

في ما يلي مقتطف من نشاط التقويم، الذي يخزّن وضع العرض المفضل للمستخدم في إعداداته المستمره:

public class CalendarActivity extends Activity {
    ...

    static final int DAY_VIEW_MODE = 0;
    static final int WEEK_VIEW_MODE = 1;

    private SharedPreferences mPrefs;
    private int mCurViewMode;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SharedPreferences mPrefs = getSharedPreferences();
        mCurViewMode = mPrefs.getInt("view_mode", DAY_VIEW_MODE);
    }

    protected void onPause() {
        super.onPause();

        SharedPreferences.Editor ed = mPrefs.edit();
        ed.putInt("view_mode", mCurViewMode);
        ed.commit();
    }
}

 

 

 

 

الانشطه

 

الأذونات

يمكن فرض القدرة على بدء نشاط معين، عند الإعلان عنه في وسم النشاط <activity> الخاصة به في ملف الإيضاح.

من خلال القيام بذلك، ستحتاج التطبيقات الأخرى إلى الإعلان عن عنصر إستخدام الأذونات <uses-permission>..

المطابق في ملفات إيضاحها، حتى تتمكن من بدء هذا النشاط.

عند بدء النشاط، يمكنك تعيين Intent.FLAG_GRANT_READ_URI_PERMISSION و/أو Intent.FLAG_GRANT_WRITE_URI_PERMISSION على الغرض.

سيؤدي هذا، إلى منح النشاط حق الوصول، إلى عناوين URI محددة في الغرض. سيبقى الوصول متاحاً، إلى أن ينتهي النشاط..

(سيبقى عبر عملية الإستضافة قيد التدمير، والتدميرات الأخرى المؤقته). بدءاً من Build.VERSION_CODES.GINGERBREAD ..

إذا تم إنشاء النشاط بالفعل، ويتم تسليم غرض جديد إلى (onNewIntent(Intent، فسيتم إضافة أي أذونات URI جديدة، تم منحها، إلى الأذونات الموجودة لديه.

راجع مستند الأمان والأذونات لمزيد من المعلومات حول الأذونات والأمان بشكلٍ عام.

 

 

 

الانشطه

 

دورة حياة العملية

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

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

بشكلٍ عام، هناك أربع حالات يمكن أن تعتمد عليها العملية بناءً على الأنشطة التي يتم تشغيلها، والمدرجة هنا بالترتيب حسب الأهمية.

سيقوم النظام بقتل العمليات الأقل أهمية (العمليات الأخيرة)، قبل أن يلجأ إلى قتل العمليات الأكثر أهمية (العمليات الأولى).

 

1- يعتبر النشاط الأمامي (النشاط الموجود في الجزء العلوي من الشاشة والذي يتفاعل معه المستخدم حالياً) هو الأكثر أهمية.

سيتم قتل عمليته فقط كحل أخير، إذا كانت تستخدم ذاكرة أكثر مما هو متاح على الجهاز.

بشكلٍ عام في هذه المرحلة، يكون الجهاز قد وصل إلى حالة ترحيل الذاكرة، لذا يكون هذا الإجراء مطلوباً، للحفاظ على إستجابة واجهة المستخدم.

 

2-  النشاط المرئي (النشاط المرئي للمستخدم ولكنه ليس في المقدمة، مثل جلسة موجودة خلف مربع حوار أمامي)..

يعتبر أمراً في غاية الأهمية، ولن يتم قتله إلا إذا كان ذلك مطلوباً للحفاظ على نشاط المقدمة.

 

3- نشاط الخلفية (نشاط غير مرئي للمستخدم وقد تم إيقافه مؤقتاً) لا يعد أمراً هاماً، لذلك فقد يقتل النظام عمليته بأمان..

من أجل إعادة الذاكرة للعمليات الأخرى الأمامية أو المرئية. إذا كان من الضروري قتل العملية، عندما يعود المستخدم مرة أخرى إلى النشاط..

(مما يجعله مرئياً على الشاشة مرة أخرى)، فسيتم إستدعاء دالة (onCreate(Bundle الخاصة به..

مع saveInstanceState التي كانت قد زودت بها مسبقاً، في

(onSaveInstanceState(Bundle بحيث يمكنه إعادة تشغيل نفسه، في نفس الحالة التي تركه المستخدم عليها آخر مرة.

 

4- العملية الفارغة هي عملية لا تستضيف أي أنشطة أو مكونات تطبيقات أخرى..

(مثل فئات الخدمات أو مستقبل البث). يتم قتل هذه العمليه بسرعة كبيرة، من قبل النظام عند إنخفاض الذاكرة.

لهذا السبب، يجب تنفيذ أي عملية خلفية، تقوم بها خارج النشاط، في سياق نشاط BroadcastReceiver أو Service ..

للتأكد من أن النظام، يعلم أنه بحاجة إلى الحفاظ على العملية الخاصة بك.

 

في بعض الأحيان، قد يحتاج النشاط إلى إجراء عملية طويلة الأمد، موجودة بشكلٍ مستقل عن دورة حياة النشاط نفسها.

قد يكون أحد الأمثلة، تطبيق الكاميرا الذي يسمح لك بتحميل صورة إلى موقع ويب.

قد يستغرق التحميل وقتاً طويلاً، ويجب أن يسمح التطبيق للمستخدم بمغادرة التطبيق أثناء تنفيذ التحميل.

لتحقيق ذلك، يجب أن يبدأ نشاطك الخدمة التي يتم فيها التحميل. يتيح ذلك للنظام تحديد العملية ذات الأهميه بشكلٍ صحيح..

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

 

 

 

 

الانشطه

الملخص


الثوابت
int DEFAULT_KEYS_DIALER

تستخدم مع (setDefaultKeyMode(int لتشغيل “طالب المكالمه” أثناء معالجة المفاتيح الإفتراضيه.

int DEFAULT_KEYS_DISABLE

تستخدم مع (setDefaultKeyMode(int لإيقاف تشغيل المفاتيح الإفتراضيه.

int DEFAULT_KEYS_SEARCH_GLOBAL

تستخدم مع (setDefaultKeyMode(int لتحديد أن ضغطات المفاتيح غير المعالجه، سوف تبدأ بحث عام..

(عادة بحث الويب، لكن قد تحدد بعض الأنظمة دوال بديله للبحث العام)

راجع android.app.SearchManager لمزيد من التفاصيل.

int DEFAULT_KEYS_SEARCH_LOCAL

تستخدم مع (setDefaultKeyMode(int لتحديد أن ضغطات المفاتتيح غير المعالجة، سوف تبدأ عملية بحث محددة بواسطة التطبيق.

int DEFAULT_KEYS_SHORTCUT

تستخدم مع (setDefaultKeyMode(int لتنفيذ إختصار قائمه في معالجة المفاتيح الإفتراضيه.

int RESULT_CANCELED

نتيجة النشاط القياسيه: تم إلغاء العمليه.

int RESULT_FIRST_USER

لبدء نتائج النشاط المعرفة من قبل المستخدم.

int RESULT_OK

 نتيجة النشاط القياسيه: نجحت العمليه.

 

يرث الثوابت من

من فئة android.content.Context
String

ACCESSIBILITY_SERVICE

تستخدم مع (getSystemService(String لإستيراد AccessibilityManager لإعطاء المستخدم نتائج أحداث واجهة المستخدم من خلال مستمعي الأحداث المسجله.

String ACCOUNT_SERVICE

تستخدم مع (getSystemService(String لإستيراد AccountManager لتلقي الأغراض في وقت من إختيارك.

String ACTIVITY_SERVICE

تستخدم مع (getSystemService(String لإستيراد ActivityManager للتفاعل مع الحالة العامه للنظام.

String ALARM_SERVICE

تستخدم مع (getSystemService(String لإستيراد AlarmManager لتلقي الأغراض في وقت من إختيارك.

String

APPWIDGET_SERVICE

تستخدم مع (getSystemService(String لإستيراد AppWidgetManager للوصول إلى ودجت التطبيق AppWidgets.

String APP_OPS_SERVICE

تستخدم مع (getSystemService(String لإستيراد AppOpsManager لتتبع عمليات التطبيق على الجهاز.

String AUDIO_SERVICE

تستخدم مع (getSystemService(String لإستيراد AudioManager للتعامل مع إدارة جهارة الصوت، أوضاع قارع الجرس، والمسار الصوتي.

String BATTERY_SERVICE

تستخدم مع (getSystemService(String لإستيراد BatteryManager لإدارة حالة البطاريه.

int

BIND_ABOVE_CLIENT

علامة لـ

(bindService(Intent, ServiceConnection, int: تشير إلى أن تطبيق العميل المرتبط بهذه الخدمه، يعتبر الخدمة أكثر أهمية من التطبيق نفسه.

int BIND_ADJUST_WITH_ACTIVITY

علامة لـ

(bindService(Intent, ServiceConnection, int: في حالة الربط من نشاط ما، فإن السماح لعملية الخدمة المستهدفة ذات الأهميه، لتكون ذات مستوى أعلى، يناءً على ما إذا كان النشاط مرئياً للمستخدم أم لا، بغض النظر عما إذا تم إستخدام علامة أخرى، لتقليل الكمية التي تستخدمها العملية الإجمالية للعميل، للتأثير عليه “النشاط”.

int BIND_ALLOW_OOM_MANAGEMENT

علامة لـ

(bindService(Intent, ServiceConnection, int: تسمح للعملية التي تستضيف الخدمة المربوطه، بالمرور من خلال إدارة الذاكرة العادية، الخاصة بها.

int

BIND_AUTO_CREATE

علامة لـ

(bindService(Intent, ServiceConnection, int: تقوم بإنشاء الخدمة تلقائياً طالما الإرتباط موجود.

int BIND_DEBUG_UNBIND

علامة لـ

(bindService(Intent, ServiceConnection, int: تتضمن مساعد تصحيح الأخطاء، للإستدعاءات الغير متطابقه مع الخدمة الغير مرتبطه.

int BIND_EXTERNAL_SERVICE

علامة لـ

(bindService(Intent, ServiceConnection, int: الخدمة المرتبطة هي خدمة خارجية معزوله.

int BIND_IMPORTANT

علامة لـ

(bindService(Intent, ServiceConnection, int: هذه الخدمة مهمة جداً للعميل، لذا يجب جلبها إلى مستوى عملية المقدمه، عندما يكون العميل موجوداً.

int

BIND_NOT_FOREGROUND

علامة لـ

(bindService(Intent, ServiceConnection, int: لا تسمح لهذا الربط برفع مستوى، عملية الخدمة المستهدفه، إلى أولوية الجدولة الأماميه.

int BIND_WAIVE_PRIORITY

علامة لـ

(bindService(Intent, ServiceConnection, int: لا تؤثر على أولوية الجدولة أو أولوية إدارة الذاكرة، من عملية الإستضافة، للخدمة المستهدفه.

String BLUETOOTH_SERVICE

تستخدم مع (getSystemService(String لإستيراد BluetoothManager لإستخدام البلوتوث.

String CAMERA_SERVICE

تستخدم مع (getSystemService(String لإستيراد CameraManager للتفاعل مع كاميرات الأجهزة.

String

CAPTIONING_SERVICE

تستخدم مع (getSystemService(String لإستيراد CaptioningManager  للحصول على خصائص الشرح التوضيحي، والإستماع إلى التغييرات في تفضيلات الشرح التوضيحي.

String CARRIER_CONFIG_SERVICE

تستخدم مع (getSystemService(String لإستيراد CarrierConfigManager لقراءة قيم تكوين الناقل.

String CLIPBOARD_SERVICE

تستخدم مع (getSystemService(String لإستيراد ClipboardManager للوصول إلى محتويات الحافظة العامه و تعديلها.

String COMPANION_DEVICE_SERVICE

تستخدم مع (getSystemService(String لإستيراد CompanionDeviceManager لإدارة الأجهزة المصاحبة.

String

CONNECTIVITY_SERVICE

تستخدم مع (getSystemService(String لإستيراد ConnectivityManager للتعامل مع إدارة إتصالات الشبكة.

String CONSUMER_IR_SERVICE

تستخدم مع (getSystemService(String لإستيراد ConsumerIrManager لبث إشارات الأشعة تحت الحمراء من الجهاز.

int CONTEXT_IGNORE_SECURITY

تستخدم مع (createPackageContext(String, int: لتجاهل أي قيود أمنية على السياق المطلوب، مما يسمح بتحميله دائماً.

int CONTEXT_INCLUDE_CODE

تستخدم مع (createPackageContext(String, int: لتضمين كود التطبيق مع السياق.

int

CONTEXT_RESTRICTED

تستخدم مع (createPackageContext(String, int: قد يقوم السياق المقيد بتعطيل ميزات محددة.

String CROSS_PROFILE_APPS_SERVICE

تستخدم مع (getSystemService(String لإستيراد CrossProfileApps لتجاوز عمليات الملف الشخصي.

String DEVICE_POLICY_SERVICE

تستخدم مع (getSystemService(String لإستيراد DevicePolicyManager للعمل مع إدارة، سياسة الجهاز العامة.

String DISPLAY_SERVICE

تستخدم مع (getSystemService(String لإستيراد DisplayManager للتفاعل مع أجهزة العرض.

String

DOWNLOAD_SERVICE

تستخدم مع (getSystemService(String لإستيراد DownloadManager لطلب تنزيلات HTTP.

String DROPBOX_SERVICE

تستخدم مع (getSystemService(String لإستيراد DropBoxManager مثيل لتسجيل، سجلات التشخيص.

String EUICC_SERVICE

تستخدم مع (getSystemService(String لإستيراد EuiccManager لإدارة eUICC الخاصة بالجهاز (بطاقة SIM المضمنة).

String

FINGERPRINT_SERVICE

تستخدم مع (getSystemService(String لإستيراد FingerprintManager للتعامل مع إدارة بصمات الأصابع.

String HARDWARE_PROPERTIES_SERVICE

تستخدم مع (getSystemService(String لإستيراد HardwarePropertiesManager للوصول إلى خدمة خصائص الجهاز.

String INPUT_METHOD_SERVICE

تستخدم مع (getSystemService(String لإستيراد InputMethodManager للوصول إلى طرق الإدخال.

String

INPUT_SERVICE

تستخدم مع (getSystemService(String لإستيراد InputManager للتفاعل مع أجهزة الإدخال.

String IPSEC_SERVICE

تستخدم مع (getSystemService(String لإستيراد IpSecManager لتشفير Sockets أو الشبكات بإستخدام IPSec.

String JOB_SCHEDULER_SERVICE

تستخدم مع (getSystemService(String لإستيراد JobScheduler مثيل لإدارة مهام الخلفية من حين لآخر.

String KEYGUARD_SERVICE

تستخدم مع (getSystemService(String لإستيراد KeyguardManager للتحكم في keyguard.

String

LAUNCHER_APPS_SERVICE

تستخدم مع (getSystemService(String لإستيراد LauncherApps للإستعلام عن، ومراقبة التطبيقات القابله للإطلاق، عبر الملفات الشخصية للمستخدم.

String LAYOUT_INFLATER_SERVICE

تستخدم مع (getSystemService(String لإستيراد LayoutInflater لتضخيم مصادر المخطط في هذا السياق.

String LOCATION_SERVICE

تستخدم مع (getSystemService(String لإستيراد LocationManager للتحكم في تحديثات الموقع.

String

MEDIA_PROJECTION_SERVICE

تستخدم مع (getSystemService(String لإستيراد MediaProjectionManager مثيل لإدارة جلسات عرض الوسائط.

String MEDIA_ROUTER_SERVICE

تستخدم مع (getSystemService(String لإستيراد MediaRouter للتحكم في، وإدارة نقل الوسائط.

String MEDIA_SESSION_SERVICE

تستخدم مع (getSystemService(String لإستيراد MediaSessionManager لإدارة جلسات الوسائط.

String MIDI_SERVICE

تستخدم مع (getSystemService(String لإستيراد

MidiManager للوصول إلى خدمة MIDI.

int

MODE_APPEND

وضع إنشاء الملف: للإستخدام مع (openFileOutput(String, int، إذا كان الملف موجوداً بالفعل، فأكتب البيانات في نهاية الملف الموجود بدلاً من مسحه.

int MODE_ENABLE_WRITE_AHEAD_LOGGING

علامة فتح قاعدة البيانات: عند التعيين، يتم فتح قاعدة البيانات مع تمكين التسجيل المسبق، بشكلٍ إفتراضي.

int MODE_MULTI_PROCESS

تم إيقاف هذا الثابت في المستوى 23.

لا يعمل MODE_MULTI_PROCESS بشكلٍ موثوق به في بعض إصدارات الأندرويد، علاوة على ذلك، لا يوفر أي آلية للتوفيق بين التعديلات المتزامنة عبر العمليات.

يجب ألا تحاول التطبيقات إستخدامه. بدلاً من ذلك، يجب عليها إستخدام نهج إدارة البيانات، عبر عملية واضحة مثل ContentProvider.

int

MODE_NO_LOCALIZED_COLLATORS

علامة قاعدة البيانات المفتوحة: عند التعيين، يتم فتح قاعدة البيانات دون دعم للمجمعين “collators” المحليين.

int MODE_PRIVATE

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

int MODE_WORLD_READABLE

تم إيقاف هذا الثابت في المستوى 17.

يعتبر إنشاء ملفات قابلة للقراءة، عالمياً، أمراً خطيراً للغاية، ومن المحتمل أن يؤدي إلى ثغرات أمنية في التطبيقات.

وهو أمر محبط بشدة؛ بدلاً من ذلك، يجب أن تستخدم التطبيقات آلية رسمية أكثر للتفاعلات، مثل ContentProvider و BroadcastReceiver و Service.

لا توجد ضمانات بأن وضع الوصول هذا، سيبقى في الملف، مثل عند الإنتقال خلال النسخ الإحتياطي والإستعادة.

int

MODE_WORLD_WRITEABLE

تم إيقاف هذا الثابت في المستوى 17 .

يعتبر إنشاء ملفات قابلة للكتابة على مستوى العالم أمراً خطيراً للغاية، ومن المحتمل أن يتسبب في ثغرات أمنية في التطبيقات.

وهو أمر محبط بشدة؛ بدلاً من ذلك، يجب أن تستخدم التطبيقات آلية رسمية أكثر للتفاعلات، مثل ContentProvider و BroadcastReceiver و Service.

لا توجد ضمانات بأن وضع الوصول هذا سيبقى في الملف، مثل عند الإنتقال خلال النسخ الإحتياطي والإستعادة.

String NETWORK_STATS_SERVICE

للإستخدام مع (getSystemService(String لإستيراد NetworkStatsManager للإستعلام عن إحصائيات إستخدام الشبكة.

String NFC_SERVICE

للإستخدام مع (getSystemService(String لإستيراد NfcManager لإستخدام NFC.

String

NOTIFICATION_SERVICE

للإستخدام مع (getSystemService(String لإستيراد NotificationManager لإعلام المستخدم بأحداث الخلفية.

String NSD_SERVICE

للإستخدام مع (getSystemService(String لإستيراد NsdManager للتعامل مع إدارة، إكتشاف خدمة الشبكة

String POWER_SERVICE

للإستخدام مع (getSystemService(String لإستيراد PowerManager للتحكم في إدارة الطاقة، بما في ذلك “lock wake” ، مما تتيح لك تشغيل الجهاز أثناء تشغيل المهام الطويلة.

String PRINT_SERVICE

PrintManager للطباعة وإدارة الطابعات، ومهام الطباعة.

int RECEIVER_VISIBLE_TO_INSTANT_APPS

علامة لـ

(registerReceiver(BroadcastReceiver, IntentFilter:

يمكن للمستقبل، إستقبال البث من التطبيقات الفورية.

String

RESTRICTIONS_SERVICE

تستخدم مع (getSystemService(String لإستيراد RestrictionsManager لإسترجاع قيود التطبيق وطلب أذونات للعمليات المقيدة.

String SEARCH_SERVICE

تستخدم مع (getSystemService(String لإستيراد SearchManager للتعامل مع البحث.

String SENSOR_SERVICE

تستخدم مع (getSystemService(String لإستيراد SensorManager للوصول إلى المستشعرات “sensors”.

String SHORTCUT_SERVICE

تستخدم مع (getSystemService(String لإستيراد ShortcutManager للوصول إلى خدمة إختصار المشغل.

String

STORAGE_SERVICE

تستخدم مع (getSystemService(String لإستيراد StorageManager للوصول إلى وظائف تخزين النظام.

String STORAGE_STATS_SERVICE

تستخدم مع (getSystemService(String لإستيراد StorageStatsManager للوصول إلى إحصائيات تخزين النظام.

String SYSTEM_HEALTH_SERVICE

تستخدم مع (getSystemService(String لإستيراد SystemHealthManager للوصول إلى صحة النظام (البطارية، الطاقة، الذاكرة، الخ) المقاييس.

String TELECOM_SERVICE

تستخدم مع (getSystemService(String لإستيراد TelecomManager لإدارة ميزات الجهاز المتعلقة بالإتصالات.

String

TELEPHONY_SERVICE

تستخدم مع (getSystemService(String لإستيراد TelephonyManager للتعامل مع إدارة ميزات الإتصالات الهاتفية للجهاز.

String TELEPHONY_SUBSCRIPTION_SERVICE

تستخدم مع (getSystemService(String لإستيراد SubscriptionManager للتعامل مع إدارة الإشتراكات الهاتفية للجهاز.

String TEXT_CLASSIFICATION_SERVICE

تستخدم مع (getSystemService(String لإستيراد TextClassificationManager لخدمات تصنيف النص.

String TEXT_SERVICES_MANAGER_SERVICE

تستخدم مع (getSystemService(String لإستيراد

TextServicesManager للوصول إلى خدمات النص.

String

TV_INPUT_SERVICE

تستخدم مع (getSystemService(String لإستيراد TvInputManager للتفاعل مع مدخلات التلفاز على الجهاز.

String UI_MODE_SERVICE

تستخدم مع (getSystemService(String لإستيراد

UiModeManager للتحكم في أوضاع واجهة المستخدم.

String USAGE_STATS_SERVICE

تستخدم مع (getSystemService(String لإستيراد UsageStatsManager لطلب إحصائيات إستخدام الجهاز.

String USB_SERVICE

تستخدم مع (getSystemService(String لإستيراد

UsbManager للوصول إلى أجهزة USB (كمضيف USB)، وللسيطرة على سلوك هذا الجهاز، كجهاز USB.

String

USER_SERVICE

تستخدم مع (getSystemService(String لإستيراد

UserManager لإدارة المستخدمين على الأجهزة التي تدعم تعدد المستخدمين.

String VIBRATOR_SERVICE

تستخدم مع (getSystemService(String لإستيراد Vibrator للتفاعل مع الإهتزاز في الجهاز.

String WALLPAPER_SERVICE

تستخدم مع (getSystemService(String لإستيراد com.android.server.WallpaperService للوصول إلى الخلفيات.

String

WIFI_AWARE_SERVICE

تستخدم مع (getSystemService(String لإستيراد WifiAwareManager للتعامل مع إدارة Wi-Fi.

String WIFI_P2P_SERVICE

تستخدم مع (getSystemService(String لإستيراد WifiP2pManager للتعامل مع إدارة إتصالات واي فاي (peer-to-peer).

String WIFI_RTT_RANGING_SERVICE

تستخدم مع (getSystemService(String لإستيراد WifiRttManager لأجهزة تتراوح بين الواي فاي، ملاحظة:هذه بديلة لـWIFI_RTT_SERVICE المذكورة أعلاه.

String

WIFI_SERVICE

تستخدم مع (getSystemService(String لإستيراد WifiManager للتعامل مع إدارة الوصول إلى خدمة الواي فاي.

String WINDOW_SERVICE

تستخدم مع (getSystemService(String لإستيراد WindowManager للوصول إلى مدير نافذة النظام.

من الواجهه android.content.ComponentCallbacks2

 

int

TRIM_MEMORY_BACKGROUND

مستوى لـ (onTrimMemory(int: تنتقل العملية إلى قائمة LRU.

int TRIM_MEMORY_COMPLETE

مستوى لـ (onTrimMemory(int:

تقترب العملية من نهاية قائمة LRU الخلفية، وإذا لم يتم العثور على ما يكفي من الذاكرة، في أقرب وقت سيتم قتلها.

int

TRIM_MEMORY_MODERATE

مستوى لـ (onTrimMemory(int: العملية بالقرب من منتصف قائمة LRU الخلفية؛ يمكن أن يساعد تحرير ذاكرة النظام..

في الإحتفاظ بالعمليات الأخرى التي يتم تشغيلها لاحقاً في القائمة للحصول على أداء أفضل بشكلٍ عام.

int TRIM_MEMORY_RUNNING_CRITICAL

مستوى لـ (onTrimMemory(int: العملية ليست عملية خلفية مستهلكة، ولكن الجهاز يعمل بمستوى منخفض للغاية من الذاكرة..

و على وشك عدم القدرة على الحفاظ على تشغيل أية عمليات خلفية.

int

TRIM_MEMORY_RUNNING_LOW

مستوى لـ (onTrimMemory(int: العملية ليست عملية خلفية مستهلكة، ولكن الجهاز يعمل على مستوى منخفض للذاكرة.

int TRIM_MEMORY_RUNNING_MODERATE

مستوى لـ (onTrimMemory(int: العملية ليست عملية خلفية مستهلكة، ولكن الجهاز يعمل بشكلٍ  معتدل في الذاكرة.

int TRIM_MEMORY_UI_HIDDEN

مستوى لـ (onTrimMemory(int: العملية كانت تظهر واجهة المستخدم، ولم تعد تفعل ذلك.

 

الحقول

[]protected static final int FOCUSED_STATE_SET

البناء العام

()Activity

 

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات

36 thoughts on “الانشطه”

اترك رد