با یک سری دیگه از آموزش های قدم به قدم با مونو در خدمت شما هستیم در آموزش قبلی با طریقه انتقال داده بین Activities در زامارین آشنا شدیم در این آموزش قصد داریم با یکی دیگه از مولفه های مهم در برنامه نویسی اندروید آشنا شویم.سرویسها در اندروید جهت استفاده در برنامه های که نیاز به کارهای طولانی و در دسترس بودن همیشگی را دارند کاربرد خواهند داشت. سرویسها در اندروید معمولآ کار خود را با فعالیت ها آغاز می کنند دو راه جهت استفاده از سرویسها در برنامه های اندروید وجود دارد.
آشنایی با Services در زامارین

  1. سرویسهای اغاز شده (Started Services)
  2. سرویسهای محدود (Bounded Services)

سرویسهای اغاز شده (Started Services)

سرویس های آغاز شده توسط فعالیت ها با استفاده از تابع StartService کار خود را آغاز می کنند. همچنین این سرویسها با استفاده از تابع StopService به کار خود پایان می دهند این نوع سرویسها حتی پس از نابود شدن (اجرای تابع destroyed) به کار خود ادامه خواهند داد. این نوع سرویسها پس از اجرا نیازی ندارند تا بدانند توسط کدام فعالیت شروع به کار کرده اند. در تصویر شما چرخه حیاط یک سرویس آغاز شده را بعلاوه تابع فراخوانی آن را مشاهده خواهید کرد.

آشنایی با Services در زامارین

همچنین این کلاس دارای یک تابع OnBind هست که باید پیاده سازی دارد چون این کلاس یک کلاس انتزاعی است (abstract) ولی چون ما این نوع سرویس ها رو با StartService فراخوانی می کنم نیاز به پیاده سازی خواصی نداریم کافیست برای سرویس آغاز شده null بازگشت دهیم. تابع OnBind معمولا در سرویس های محدود استفاده می شود که در ادامه توضیح خواهیم داد.

نحوه ایجاد یک سرویسهای اغاز شده

پس از ایجاد یک کلاس در برنامه خود کافیست خصوصیت Service و ارث بری از این کالاس را برای سرویس مورد نظر ایجاد نمایید و در صورت نیاز برخی از توابع آن را دورباره نویسی نمایید به کد های زیر توجه کنید

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Util;

namespace Alarm
{
    [Service]
  public  class MYservice : Service
    {
        public override void OnCreate()
        {
            Log.Debug("MYservice", "شروع کار سرویس");
            base.OnCreate();
        }
        [return: GeneratedEnum]
        public override StartCommandResult OnStartCommand(Intent intent, [GeneratedEnum] StartCommandFlags flags, int startId)
        {
            return base.OnStartCommand(intent, flags, startId);
        }
        public override void OnDestroy()
        {
            Log.Debug("DemoService", "از بین رفتن سرویس");
            base.OnDestroy();
        }
        public override IBinder OnBind(Intent intent)
        {
            // چون یک سرویس آغاز شده است نیاز به پیاده سازی خاصی ندارد
            return null;
        }
    }
}

در مثال بالا توابعی را دوباره نویسی کردیم که در زیر در مورد آنها توضیح خواهیم داد

  • OnCreate : زمانی یک سرویس کار خود را آغاز کرد این تابع فراخوانی خواهد شد. این جایی است که نیاز به مقداردهی اولیه مورد نیاز دارید.
  • OnStartCommand : هر زمانی که درخواستی به این سرویس فرستاده شود این تابع فراخوانی خواهد شد. مثلآ ریست شدن سیستم
  • OnDestroy : این تابع زمانی فراخوانی می شود یک سرویس توسط دو متد StopSelf و StopService فراخوانی شود.

خاصیت [Service] باعت رجیستر شدن این سرویس در فایل AndroidManifest.xml خواهد شد در کد زیر نحوه رجیستر کردن یک فایل در فایل AndroidManifest.xml را بطور مستقیم نشان می دهد

<service android:name="Alarm.MYservice"></service>

سرویسهای محدود (Bounded Services)

سرویسهای محدود توسط فعالیت ها با استفاده از تابع bindService کار خود را آغاز می کنند. همچنین این سرویس خدماتی را بصورت کلاینت – سروی
می هد همچنین این نوع سرویس ها می توانند به وسیله یکسری فرایند خاص در برنامه های دیگر ایجاد شوند و همچنین این سرویس ها می توانند به چندین برنامه دیگر سرویس دهی کنند.
در تصویر شما چرخه حیاط یک سرویس محدود را مشاهده خواهید کرد
آشنایی با Services در زامارین

  • OnBind : این تابع زمانی استفاده می شود که نیاز به استفاده از سرویس داریم چون این تایع یک شی از IBinder جهت استفاده کلاینت می دهد این تاربع معمولآ د سوریس فراخوانی می شود
  • OnUnbind : هر زمان که کلاینتی قصدپایان دادن کار خود با این سرویس را دارد جهت رها شدن از سرویس از این تابع استفاده می کند

جهت اطلاع بیشتر از سرویس های آغاز شده به اینجا و سرویس های محدود به اینجا مراجعه فرمایید

25 پست
محمدزاده
سابقه 10 ساله برنامه نویسی مایکروسافت شامل C# , WPF , ASP.Net , Asp.Net Mvc و چند سال اندروید کار کردم تا اینکه زامارین دست به کار شد الان 3 ساله برنامه های اندرویدم رو با ویژوال استادیو مینویسم و لذت میبرم و دوست دارم این لذت رو با دیگران شریک باشم
برچسب ها: , , , ,
مطالب مرتبط
مطالب نویسنده
مطالب مشابه
مونو اندروید Activities در زامارین | روز ۱۱ چهارشنبه ۲۰ آبان ۱۳۹۴
دیدگاه کاربران

برای نوشتن دیدگاه میتوانید به حساب کاربری خود وارد شوید ورود ارسال نظر بصورت مهمان
ارسال نظر (مهمان):