شاشة التطبيقات الحديثه

الإعلانات

شاشة التطبيقات الحديثه

 

شاشة التطبيقات الحديثه (يشار إليها أيضاً بأسم شاشة “النظرة العامة” أو قائمة المهام الحديثة أو التطبيقات الحديثة)..

هي واجهة مستخدم على مستوى النظام تسرد الأنشطة والمهام التي تم الوصول إليها مؤخراً. يمكن للمستخدم التنقل عبر القائمة وتحديد مهمة لإستئنافها..

أو يمكنه إزالة مهمة من القائمة عن طريق تمريرها بعيداً. يقدم أندرويد 5.0 (مستوى API 21) نموذج المستند المركزي..

حيث قد تظهر مثيلات متعددة، لنفس النشاط، تحتوي على مستندات مختلفة، كمهام في الشاشة الحديثه.

على سبيل المثال، قد يكون لدى قوقل درايف مهمة لكل من مستندات قوقل المتعددة. يظهر كل مستند كمهمة في الشاشة الحديثه.

الشكل 1. الشاشة الحديثه التي تعرض ثلاث مستندات من قوقل درايف، كلٍ منها تمثل مهمة منفصلة.

 

 

مثال شائع آخر هو عندما يستخدم المستخدم المتصفح، ثم ينقر على مشاركة> Gmail. تظهر شاشة مؤلف Compose تطبيق Gmail.

يؤدي النقر على زر “التطبيقات الحديثه” في ذلك الوقت إلى عرض متصفح كروم و تطبيق Gmail كمهام منفصلة.

في الإصدارات الأقدم من الأندرويد، تظهر جميع الأنشطة كمهمة واحدة، مما يجعل زر “الرجوع” هو الوسيلة الوحيدة للتنقل.

يوضح الشكل 2 كيفية ظهور شاشة التطبيقات الحديثه في الإصدار 5.0 من نظام التشغيل الأندرويد والإصدارات الأحدث..

مقابل الإصدارات الأقل من النظام الأساسي. تعرض الصورة على الشاشة اليمنى نظام التشغيل أندرويد 5.0 والإصدارات الأحدث..

والصورة على اليسار تعرض كيفية ظهورها في إصدارات الأندرويد الأقدم.

 

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

 

 

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

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

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

أيضاً، تسمح لك سمات النشاط <activity> بتعيين السلوك في ملف الإيضاح.

 

 

 

 

 

إضافة مهام إلى شاشة التطبيقات الحديثه


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

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

 

 

 

إستخدام علامة الغرض لإضافة مهمة

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

لإدراج فاصل منطقي بحيث يعامل النظام نشاطك، كمهمة جديدة في شاشة التطبيقات الحديثه..

قم بتمرير علامة FLAG_ACTIVITY_NEW_DOCUMENT في دالة ()addFlags للغرض الذي يطلق النشاط.

 

ملاحظة: العلامة FLAG_ACTIVITY_NEW_DOCUMENT تحل محل العلامة FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET ..

والتي تم إيقافها إعتباراً من أندرويد 5.0 (مستوى واجهة برمجة التطبيقات 21).

 

 

إذا قمت بتعيين علامة FLAG_ACTIVITY_MULTIPLE_TASK عند إنشاء المستند الجديد، يقوم النظام دائماً بإنشاء مهمة جديدة..

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

KOTLIN 

fun createNewDocument(view: View) {
    val newDocumentIntent = newDocumentIntent()
    if (useMultipleTasks) {
        newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
    }
    startActivity(newDocumentIntent)
}

private fun newDocumentIntent(): Intent =
        Intent(this, NewDocumentActivity::class.java).apply {
            addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT or
                    android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS)
            putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, documentCounter++)
        }

 

JAVA

DocumentCentricActivity.java

public void createNewDocument(View view) {
      final Intent newDocumentIntent = newDocumentIntent();
      if (useMultipleTasks) {
          newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
      }
      startActivity(newDocumentIntent);
  }

  private Intent newDocumentIntent() {
      boolean useMultipleTasks = checkbox.isChecked();
      final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
      newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
      newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, documentCounter++);
      return newDocumentIntent;
  }

}

 

ملاحظة: يجب أن يكون للأنشطة التي تم إطلاقها بإستخدام علامة FLAG_ACTIVITY_NEW_DOCUMENT قيمة السمة

“android: launchMode =”standard (الإفتراضيه) في ملف الإيضاح.

 

عندما يقوم النشاط الرئيسي بإطلاق نشاط جديد، يقوم النظام بالبحث من خلال المهام الموجودة عن مهمة..

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

FLAG_ACTIVITY_MULTIPLE_TASK ، فسيتم إنشاء مهمة جديدة بإستخدام النشاط كأساس لها. إذا كانت هناك مهمه..

فسوف تجلب هذه المهمة إلى الأمام ويتم تمرير الغرض الجديد إلى ()onNewIntent .

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

KOTLIN

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_new_document)
    documentCount = intent
            .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0)
    documentCounterTextView = findViewById(R.id.hello_new_document_text_view)
    setDocumentCounterText(R.string.hello_new_document_counter)
}

override fun onNewIntent(newIntent: Intent) {
    super.onNewIntent(newIntent)
    /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this Activity
    will be reused. */
    setDocumentCounterText(R.string.reusing_document_counter)
}

JAVA

NewDocumentActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_document);
    mDocumentCount = getIntent()
            .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0);
    mDocumentCounterTextView = (TextView) findViewById(
            R.id.hello_new_document_text_view);
    setDocumentCounterText(R.string.hello_new_document_counter);
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity
    is reused to create a new document.
     */
    setDocumentCounterText(R.string.reusing_document_counter);
}

 

 

 

 

 

إستخدام سمة النشاط لإضافة مهمة

يمكن أن يحدد النشاط أيضاً في ملف إيضاحه أنه يتم تشغيله دائماً في مهمة جديدة بإستخدام سمة النشاط ، android:documentLaunchMode.

تحتوي هذه السمة على أربع قيم تنتج التأثيرات التالية عندما يقوم المستخدم بفتح مستند بواسطة التطبيق:

 

intoExisting

يعيد النشاط إستخدام مهمة موجودة للمستند.

له نفس إعداد العلامة FLAG_ACTIVITY_NEW_DOCUMENT بدون إعداد علامة FLAG_ACTIVITY_MULTIPLE_TASK ، كما هو موضح أعلاه في إستخدام علامة الغرض لإضافة مهمة.

 

دائماً “always

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

يعد إستخدام هذه القيمة هو نفس إعداد العلامتين FLAG_ACTIVITY_NEW_DOCUMENT و FLAG_ACTIVITY_MULTIPLE_TASK.

 

لا شيء “none

لا يقوم النشاط بإنشاء مهمة جديدة للمستند.

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

 

أبداً “never

لا يقوم النشاط بإنشاء مهمة جديدة للمستند.

إعداد هذه القيمة يتجاوز سلوك العلامات FLAG_ACTIVITY_NEW_DOCUMENT و FLAG_ACTIVITY_MULTIPLE_TASK ..

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

والتي تستأنف من أي نشاط آخر إستدعاه المستخدم.

 

ملاحظة: بالنسبة إلى القيم بخلاف “لا شيء” و “أبداً” يجب تعريف النشاط بإستخدام “launchMode =”standard.

إذا لم يتم تحديد هذه السمة، فسيتم إستخدام “documentLaunchMode =”none.

 

 

 

إزالة المهام


بشكلٍ إفتراضي، تتم إزالة مهمة المستند تلقائياً من شاشة التطبيقات الحديثة عند إنتهاء نشاطها.

يمكنك تجاوز هذا السلوك بإستخدام فئة ActivityManager.AppTask ، مع علامة الغرض، أو مع سمة النشاط <activity>.

يمكنك دائماً إستبعاد مهمة من شاشة التطبيقات الحديثة تماماً من خلال تعيين سمة النشاط android:excludeFromRecents إلى القيمة “صحيح”.

 

يمكنك تعيين الحد الأقصى لعدد المهام التي يمكن أن يتضمنها تطبيقك في شاشة التطبيقات الحديثة عن طريق تعيين السمة النشاط

android:maxRecents إلى قيمة عدد صحيح. القيمة الإفتراضية هي 16. عند الوصول إلى الحد الأقصى لعدد المهام..

تتم إزالة المهمة الأقل إستخداماً مؤخراً من شاشة التطبيقات الحديثه. قيمة الحد الأقصى من android:maxRecents هي 50..

(25 على الأجهزة ذات الذاكرة المنخفضة)؛ القيم الأقل من 1 ليست صحيحة.

 

 

 

 

إستخدام فئة AppTask لإزالة المهام

في النشاط الذي يقوم بإنشاء مهمة جديدة في شاشة التطبيقات الحديثة، يمكنك تحديد وقت إزالة المهمة ..

وإنهاء جميع الأنشطة المرتبطة بها عن طريق إستدعاء دالة ()finishAndRemoveTask.

KOTLIN

fun onRemoveFromOverview(view: View) {
    // It is good pratice to remove a document from the overview stack if not needed anymore.
    finishAndRemoveTask()
}

JAVA

NewDocumentActivity.java

public void onRemoveFromRecents(View view) {
    // The document is no longer needed; remove its task.
    finishAndRemoveTask();
}

 

ملاحظة: يؤدي إستخدام الدالة ()finishAndRemoveTask إلى إلغاء إستخدام علامة FLAG_ACTIVITY_RETAIN_IN_RECENTS، الموضحة أدناه.

 

 

 

 

الإحتفاظ بالمهام المنتهيه

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

في دالة ()addFlags للغرض الذي يقوم بتشغيل النشاط.

KOTLIN

private fun newDocumentIntent() =
        Intent(this, NewDocumentActivity::class.java).apply {
            addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT or
                    android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS)
            putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, getAndIncrement())
        }

JAVA

DocumentCentricActivity.java

private Intent newDocumentIntent() {
    final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
    newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
      android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
    newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, getAndIncrement());
    return newDocumentIntent;
}

 

لتحقيق التأثير نفسه، قم بتعيِيّن السمة  <activity>

android:autoRemoveFromRecents إلى القيمة “خطأ”.  القيمة الإفتراضية هي “صحيح” لأنشطة المستند، و “خطأ” للأنشطة العادية.

يؤدي إستخدام هذه السمة إلى إلغاء علامة FLAG_ACTIVITY_RETAIN_IN_RECENTS ، التي تمت مناقشتها سابقاً.

 

 

 

نموذج كود إضافي


لتنزيل نموذج تطبيق عن التطبيقات المركزية للمستندات، راجع

Android DocumentCentricRecents Sample و

Android DocumentCentricRelinquishIdentity Sample.

 


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

الإعلانات