جلوگیری از متوقف شدن سرویس برنامه اندروید (جاوا)

شاید این موضوع که چطور نذاریم سرویس تو اندروید بسته شه برای بعضی ها موضوع عجیبی باشه چون بنظر میاد سرویس خودش برای اینه که کارمون مثل کار معمولی بسته نشه!
اما واقعا اینطور نیست و سرویس هم بسته به کد ما ممکنه تو بعضی گوشی ها یا حتی همه گوشی ها!! بسته شه.
اما موضوع اینه که گاهی وقتها کد سرویستون مشکلی نداره اما توی بعضی از موبایلها سخت گیری هایی وجود داره که سرویس برناممونو به طرز بیرحمانه ای میبنده 🙁
طبق تجربه ای که توی این موضوع داشتم به قطعه کدی رسیدم که با نمایش یه نوتیفیکیشن سرویسمون رو خیلی خوب(!) در حال اجرا نگه میداره حتی زمانی که گوشیم بدون این حالت اونو میبست با استفاده از این حالت بسته نشده و احتمالا توی اکثر یا شاید همۀ گوشی ها کار کنه.

بریم سراغ کد!
(این کد توی متد onStartCommand سرویس منه)

چند نکته درمورد این تکه کد:
توی خط اول settings اسم شیرد پریفرنس من هست که از اون چک میکنم کاربر دوست داشته این حالت فعال شه یا نه،چون تو بعضی گوشی ها نیاز نیست باشه و سرویس همینجوری باز میمونه و وجود یک نوتیفیکیشن دائمی ممکنه اعصاب کاربرو خراب کنه! D-:
مقصد کلیک این نوتیفیکیشنمو یک اکتیویتی گذاشتم که کلاسش همون DisableStableMode هست
در آخر هم با startForeground کارمونو عملی میکنیم
یادتون باشه کامنتهای کدم ممکنه نقصهایی توی نوشتار یا درست بودن داشته باشن!

موفق باشید 😉

ابوالفضل

علاقه مند به برنامه نویسی اندروید ، طراحی وب و گرافیک

مطالب مرتبط

3 دیدگاه‌

  1. SAMIE گفت:

    سلام خسته نباشید ممنون از اموزش شما ببخشید میتونید متن های همون کل سرویس برنامه تون رو بفرسید که توش همین if (setting.getBoolean(“flag_stable_mode”, true)) {//ba in ravesh service ma baraye baste shodan estesna gharar migirad va dar hale kar mimanad
     
                    Intent notificationIntent = new Intent(this, DisableStableMode.class);//DisableStableMode.class classe activiti i ast ke ba’d az click rooye notification bayad baz shavad
                    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_N  EW_TASK);
                    PendingIntent mContentIntent = PendingIntent.getActivity(getBaseContext(),
                            ۱, notificationIntent, 0);//ex1: oon 1 request id ast ke nabayad 0 bashad
                    //request code in nabayad jaye digei az barname be kar bore shode bashe
                    //notificatione jadid agar request code yeksani ba ghabliye dashte bashad jaygozinash mishavad
     
     
                    Notification notification = new NotificationCompat.Builder(this)
                            .setSmallIcon(R.drawable.on)
                            .setContentTitle(getString(R.string.app_name)).set  ContentText(getString(R.string.stable_mode))
                            .setContentIntent(mContentIntent).build();
     
     
                    startForeground(1, notification);
    رو نوشتید خیلی ممنون چون کامل تر بفهمم

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

چهارده + 12 =

www.000webhost.com