1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آشنايي با ساختار سرويس‌ها در سيستم‌عامل اندرويد

شروع موضوع توسط para3to ‏14/5/12 در انجمن نرم افزار

  1. کاربر ارزشمند❤

    تاریخ عضویت:
    ‏17/5/11
    ارسال ها:
    39,257
    تشکر شده:
    47,234
    امتیاز دستاورد:
    170
    آشنايي با ساختار سرويس‌ها در سيستم‌عامل اندرويد

    جام جم آنلاين: برای ایجاد یک سرویس نیاز دارید کلاس خود را از کلاس پایه Service ارث بری کنید سپس با پیاده‌کردن آن، یک سرویس ایجاد کنید. در اين نوشته با بعضي روش‌ها و خصوصیات اساسی این کلاس آشنا می‌شویم.
    [​IMG]
    انجام بعضي عملیات بايد به صورت پشت‌پرده باشد؛ براي مثال شما یک برنامه نوشته‌اید که قرار است در آن فایلي صوتی اجرا شود.

    اگر از برنامه خارج شوید دیگر نمی‌توانید به پخش موسیقی ادامه دهید؛ ضمنا کنترل آن بر عهده Activity مربوط است که در آن فایل صوتی در حال اجراست؛ در نتیجه کنترل‌ برنامه و پخش موسیقی آن سخت می‌شود. راه‌حل چیست؟

    پيش از هرچیز با ساختار سرویس‌ها در سیستم‌عامل اندروید آشنا می‌شویم.
    برای ایجاد یک سرویس نیاز دارید کلاس خود را از کلاس پایه Service ارث بری کنید سپس با پیاده‌کردن آن، یک سرویس ایجاد کنید. در اين نوشته با بعضي روش‌ها و خصوصیات اساسی این کلاس آشنا می‌شویم.
    onStart این روش زمانی اجرا می‌شود که سرویس شما توسط یک Activity فراخوانی شود و با فراخوانی روش startService بخواهید سرویس مورد نظر را اجرا کنید.
    onBind زمانی این روش فراخوانی می‌شود که بخواهیم جزيی از سیستم را به سرویس مورد نظر ارجاع دهیم؛ مثلا قصد داريد یک فایل صوتی را توسط یک سرویس پخش کنید.
    با ایجاد یک کلاس که از کلاس پدر IBinder به ارث رسیده باشد و با Bind‌کردن آن به سرویس، فایل‌های خود را پخش کنید و کنترل آن را به دست بگیرید.
    onCreate این روش زمانی فراخوانی می‌شود که یک سرویس برای دفعه اول اجرا شود و سیستم بخواهد یک نمونه از آن را ایجاد کنید (این متد قبل از onStartCommand و onBind فراخوانی می‌شود)، اگر سرویس مورد نظر در حال اجرا باشد، این متد هیچ وقت فراخوانی نمی‌شود.
    onDestroy این روش زمانی اجرا می‌شود که سرویس مورد نظر برای مدت زمان زیاد مورد استفاده قرار نگرفته باشد یا به صورت دستی سرویس Stop شده باشد.
    حال به کد زیر دقت کنید :
    public class MyService extends Service {
    MediaPlayer player;
    @Override
    public IBinder onBind(Intent intent) {
    return null; }
    @Override
    public void onCreate() {
    player = MediaPlayer.create(this, R.raw.braincandy);
    player.setLooping(false); }
    @Override
    public void onDestroy() {
    Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
    player.stop(); }
    @Override
    public void onStart(Intent intent, int startid) {
    Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
    player.start(); } }
    در کد بالا ما یک سرویس ایجاد کرده‌ایم که یک شیء MediaPlayer را در خود دارد. با شروع به کار سرویس اجرا می‌شود و با پایان یافتن، سرویس نیز پایان می‌یابد.
    حال باید سرویس مورد نظر خود را با فایل مانیفست به برنامه و سیستم‌عامل اندروید معرفی کنیم. برای این کار کافی است در تگ application کد زیر را قرار دهید:
    «service android:enabled="true" android:name=".MyService" /»
    سپس برای شروع و خاتمه دادن به سرویس کافی است از روش‌هاي startService و stopService فراخوانی کنیم. ما در فرم خود دو دکمه داریم؛ یکی برای شروع و دیگری برای پایان دادن به کار سرویس. در رویداد کلیک آنها کد زیر را قرار می‌دهیم.
    public void onClick(View src) {
    switch (src.getId()) {
    case R.id.buttonStart:
    startService(new Intent(this, MyService.class));
    break;
    case R.id.buttonStop:
    stopService(new Intent(this, MyService.class));
    break; } }
    همان طور که در کدهای بالا مشاهده می‌کنید، ما برای سرویس خود یک شیء Binder تعریف نکردیم، اما اگر این شیء را تعریف کنیم، می‌توانیم با ایجاد یک شیء از کلاس ServiceConnection کنترل سرویس را بر اساس آن شیء Binder به دست بگیریم.
    برای مثال هر زمان که MediaPlayer به حالت Stop رفت یا در پخش آن خطا رخ داد، سرویس مورد نظر به صورت خودکار به حالت stop مي‌رود.
     
  2. Neghab_Dar Forever مدیر بازنشسته☕

    تاریخ عضویت:
    ‏20/4/11
    ارسال ها:
    4,055
    تشکر شده:
    12,695
    امتیاز دستاورد:
    123
    جنسیت:
    مرد
    حرفه:
    Thinker
    پاسخ : آشنايي با ساختار سرويس‌ها در سيستم‌عامل اندرويد

    به نظرم این تاپیک

    یا باید در زیر بخش مقالات آموزشی موبایل باشه

    یا در بخش سیستم عامل در انجمن اینترنت و فناوری