آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

متوقف شدن سرویس در اندروید 8 وبالا تر از8

Neshat  4 سال پیش  4 سال پیش
0 0

سلام دوستان من داخل اپ از یه ایکن شناور Floating widget استفاده کردم اما تو اندروید 8 و بالا تر از 8 موقع خاموش کردن صفحه گوشی سرویس متوقف میشه .

شما راهی یا کدی دارید که از متوقف شدنش جلو گیری کنه؟ ممنون میشم کمک کنید اپ تموم شده و فقط همین یه مشکلش باقی مونده و نمیتونم منتشرش کنم.

0 0
سلام. این فکر نمی کنم به اندروید 8 ربطی داشته باشه. موبایل من هم که اندروید 6 است همچین چیزی داره. تو موبایل من قضیه از این قراره که بخشی هست به اسم "برنامه های محافظت شده (protected apps)" که تو اون بخش اگر برنامه ای رو قرار بدم بعد از خاموش شدن صفحه نمایش سرویس مربوط به اون برنامه رو متوقف نمی کنه در غیر این صورت سرویس برنامه متوقف میشه. تو گوشی های دیگه مثل سامسونگ فکر کنم مورد مشابه ولی به اسم دیگه ای باشه. (4 سال پیش)
0 0
نه مربوط به اون نیست چون تو اندروید هشت به بعد نحوه ساخت floating widget یکم تغییر کرده یعنی باید یه if ورژن اندروید موقع ساخت view بزاری (4 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Neshat  4 سال پیش
0 0

دوستان من یه روش خوددرآوردی رو امتحان کردم که تا حالا جواب داده و سرویس متوقف نشده ولی فکر نکنم این کار زیادی امن باشه و شاید بازم امکان متوقف شدنش باشه . من کد ها رو میزارم و از شما میخوام اگه راه حلشو پیدا کردید اینجا بزاریدش

موقع استارت کردن سرویس:

 
SharedPreferences.Editor prefrences=G.preference.edit();
prefrences.putBoolean("IsActiveFloating",true);
prefrences.commit();
prefrences.apply();
isActive=true;
startAnimatioActive();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(new Intent(Main22Activity.this, FloatingView.class));
startService(new Intent(Main22Activity.this, FloatingView.class));
}else{
startService(new Intent(Main22Activity.this, FloatingView.class));
}

موقع متوقف کردن سرویس:

prefrences.putBoolean("IsActiveFloating",false);
prefrences.commit();
prefrences.apply();
stopService(new Intent(Main22Activity.this, FloatingView.class));

و کد onDestroy داخل سرویس :

if (!G.preference.getBoolean("IsActiveFloating",false)) {

super.onDestroy();
if (view != null) windowManager.removeView(view);
}

در واقع قضیه از این قرار که وقتی سرویس میخواد متوقف بشه وظعیت پریفرنسس چک میکنه اگه ما اونو روی false قرار داده باشیم دیگه متد سوپرش اجرا نمیشه اما اگه قرار باشه که با دستور ما متوقف بشه متد سوپرش اجرا میشه.


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .