سرويس ها و پردازش پس زمينه اي (background processing)

۷۷ بازديد

به صورت پيش فرض، سرويس در همان فرايندي اجرا مي شود كه thread اصلي اپليكيشن در آن حال اجرا است. به همين جهت توسعه دهنده بايستي از پردازش ناهمزمان در سرويس استفاده نموده و task هايي كه هزينه بر و سنگين هستند را در پس زمينه راه اندازي كند. يكي از الگوهايي كه مكررا براي پياده سازي سرويس بكار مي رود، اجراي يك Thread جديد در سرويس جهت انجام پردازش در پس زمينه و خاتمه دادن سرويس به هنگام اتمام پردازش مي باشد.
سرويس هايي كه در بستر فرايند خود اپليكيشن اجرا مي شوند معمولا تحت عنوان service هاي محلي يا local شناخته مي شوند.

سرويس هاي خود محيط اندرويد (platform) و سرويس هاي اختصاصي

محيط اندرويد سرويس هاي آماده و از پيش تعريف شده اي را درنظر گرفته و راه اندازي مي كند كه تمامي اپليكيشن هاي اندرويدي، در صورت برخوردار بودن از مجوزهاي لازم قادر به استفاده از آن ها استفاده مي باشند. سرويس هاي سيستم را كلاسي به نام Manager در اختيار اپليكيشن ها قرار مي دهد.كافي است براي دسترسي به آن متد getSystemService() را فراخواني نماييد.
كلاس Context تعدادي ثابت فراهم مي كند كه شما با استفاده از آن ها مي توانيد سرويس هاي نام برده را فراخواني كنيد.
اپليكيشن اندرويد مي تواند علاوه بر سرويس هاي پيش فرض سيستم اندرويد، سرويس هاي اختصاصي تعريف نموده و از آن ها در كنار سرويس هاي سيستم استفاده نمايد.
توسعه دهنده قادر است با پياده سازي سرويس هاي اختصاصي خود اپليكيشن هاي پاسخگو و تعاملي (responsive) طراحي نمايد. شما مي توانيد داده هاي اپليكيشن را به وسيله هاي سرويس واكشي نموده و زماني كه اپليكيشن راه اندازي شد، داده هاي جديد در اختيار كاربر قرار دهيد.

راه اندازي و تعريف سرويس هاي اختصاصي

سرويس هاي اختصاصي اغلب توسط كامپوننت هاي ديگر راه اندازي مي شوند، به عبارت ديگر ساير اجزا نرم افزاري اپليكيشن هاي اندرويدي نظير activity ها، broadcast receiver ها و سرويس هاي ديگر هستند كه سرويس هاي اختصاصي را راه اندازي مي كنند.

سرويس هاي پيش زمينه (foreground)

سرويس پيش زمينه سرويسي است كه از نظر اولويت و اهميت با يك activity فعال و قابل مشاهده در UI يكسان است و به همين جهت حتي اگر سيستم اندرويد با كمبود حافظه مواجه باشد باز هم اجازه ي حذف از آن ها حافظه را ندارد. سرويس foreground مي بايست در نوار نشان دهنده ي وضعيت كلي سيستم (status bar) يك اطلاعيه يا notification در زير بخش عنوان "Ongoing" مختص به خود داشته باشد. اين بدين معني است كه تا زمان حذف سرويس از foreground يا حافظه، notification قابل dismiss و حذف از status bar نخواهد بود.

1
2
3
4
5
6
7
Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
        System.currentTimeMillis());
Intent notificationIntent = new Intent(this, ExampleActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this, getText(R.string.notification_title),
        getText(R.string.notification_message), pendingIntent);
startForeground(ONGOING_NOTIFICATION_ID, notification);
تا كنون نظري ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در رویا بلاگ ثبت نام کرده اید می توانید ابتدا وارد شوید.