54 : اندرويد : إنشاء خدمة تعمل في الخلفية Creating a background service

 

ملاحظة : الموضوع عبارة عن حلقة من حلقات سلسلة برمجة وتطوير اندرويد Android Development

اندرويد :  إنشاء خدمة تعمل في الخلفية Creating a Background service 

السلام عليكم ورحمة الله وبركاته

إنشاء خدمة تعمل في الخلفية crating a background service

سوف نتعلم في هذا الدرس

  1. إنشاء IntentService
  2. تعريف IntentService ضمن ال Manifest

يفضل قراءة :

يزودنا صف IntentService  ببنية مباشرة من اجل تشغيل عملية ضمن مسرى خلفي وحيد.

هذا يمكنه من التعامل مع العمليات طويلة الامد بدون التأثير على استجابة واجهة المستخدم.

وبما ان IntentService  لا يتاثر بمعظم احداث دورة حياة الواجهة interface lifecylcle event, لذلك فإنه يستمر بالعمل حتى ضمن ظروف قد يغلق فيها AsyncTask.

تملك IntentService  ثلاث محدوديات :

  1. لا تستطيع ان تتفاعل بشكل مباشر مع واجهة المستخدم.لكي تقوم بوضع نتائجها على واجهة المستخدم, انت بحاجة إلى ارسال تلك النتائج إلى الفعالية Activity.
  2. تعمل طلبات العمل بشكل متتابع. لذلك في حال كانت عملية ما تعمل ضمن IntentService, وقمت بارسال طلب لعملية اخرى, فإن هذا الطلب سوف ينتظر ريثما ينتهي تنفيذ العملية الاولى.
  3. لا يمكن مقاطعة عملية ما تجري ضمن IntentService.

على كل الاحوال, في معظم الحالات تعتبر IntentService  الطريقة المثلى لتنفيذ العمليات ضمن الخلفية.

يبين لك هذا الدرس كيف بإمكانك ان تقوم بإنشاء صفوف فرعية خاصة بك من IntentService.

ويبين لك هذا الدرس ايضا كيف تقوم ببناء تابع الاستدعاء المطلوب onHandleIntent().

واخيرا, يوصف هذا الدرس لك كيف تقوم بتعريف IntentService  ضمن ملف ال manifest.

إنشاء IntentService

لكي تنشأ مكون من IntentService  ضمن تطبيقك, يجب ان تقوم بتعريف صف يقوم ب extend  ل IntentService, وضمن هذا الصف يجب القيام ب override للتابع onHandleIntent(). على سبيل المثال:

    

public class RSSPullService extends IntentService {
    @Override
    protected void onHandleIntent(Intent workIntent) {
        // Gets data from the incoming Intent
        String dataString = workIntent.getDataString();
        ...
        // Do work here, based on the contents of dataString
        ...
    }
}

لاحظ بأن الاستدعاءات الاخرى لمكون ال Service  النظامي, مثل onStartCommand() , سوف يتم استحضارها بشكل اوتوماتيكي عبرIntentService.

ضمن IntentService,يجب ان تتجنب القيام ب override  لتلك الاستدعاءات.

تعريف IntentService  ضمن ملف ال Manifest

تحتاج IntentService  إلى مدخل ضمن ملف manifest  ضمن تطبيقك.

قم بتزيد ملف ال manifest  بمدخل على شكل عنصر <service>وهو بدوره عبارة عن ابن للعنصر<application>:

  <application
        android:icon="@drawable/icon"
        android:label="@string/app_name">
        ...
        <!--
            Because android:exported is set to "false",
            the service is only available to this app.
        -->
        <service
            android:name=".RSSPullService"
            android:exported="false"/>
        ...
    <application/>

تحدد  الخاصية android:name  اسم الصف المشتق من IntentService.

لاحظ بأن العنصر <service>لا يحوي على Intent filter.

تستخدم الفعالية التي ترسل طلبات العمل إلى الخدمة  ما يعرف ب Explicit intent, وبذلك لسنا بحاجة إلى filter.

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

الآن , وبعد ان تعرفت على اساسيات صف IntentService, اصبح بإمكانك ان تقوم بارسال طلبات عمل إلى تلك الخدمة عبر اغراض Intent.

الاجرائية التي توضح عملية انشاء هذه الاغراض وارسالها إلى IntentService  تم توضيحها في الدرس القادم.

 وإلى لقاء في حلقة قريبة , وإلى ذلك الحين استودعكم الله والسلام عليكم ورحمة الله وبركاته.

Advertisements

, , , , , , , , ,

  1. أضف تعليق

اترك رد

Please log in using one of these methods to post your comment:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: