کسانی که با سرویس کار کردند لطفا راهنمایی کنند
سلام
دوستان من از SignalR داخل پروژه خودم برای دریافت اطلاعات از سرور استفاده میکنم و این کار رو با سرویس انجام میدم.مشکل اینجاست که من نیاز به اجرای سرویس بصورت دائمی دارم.روش هایی که برای این کار مطرح شده استفاده از الارم منیجر هست ولی الارم منیجر در نسخه های بالا درست اجرا نمیشه و مصرف باطری رو هم بالا میبره.البته جاب اسکجولر هم وجود داره.من بجای استفاده از الارم منیجر تو ondestroy سرویس با استفاده از broadcasrt دوباره سرویس رو اجرا میکنم.حالا روش درستی هست یا نه نمیدونم ولی جواب میده.مشکل اینجاست که وقتی اپلیکیشن کلا بسته بشه متد ondestroy اجرا نمیشه و سرویس عملا از کار میفته.سرویس رو هم بصورت START_STICKY اجر ا میکنم.
از دوستانی که تجربه دارند سناریویی برای این کار سراغ دارند.مثل تلگرام که سرویسشو حتی دستی هم ببندی سریعا اجرا میشه.ممنونم
ابتدا توی مانیفیست این کدها رو اضافه کنید :
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver
android:name=".service.BootCompleteReceiver"
android:enabled="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
اینم از کلاسی که توی مانیفیست تعریف کردیم :
public class BootCompleteReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, MyService.class);
context.startService(service);
}
}
داخل سرویس توی متد onStartCommand باید حتما return START_STICKY رو بنویسید.
این متد هم داخل سرویستون بنویسید
@Override
public void onTaskRemoved(Intent rootIntent) {
Intent intent = new Intent(getApplicationContext(), this.getClass());
intent.setPackage(getPackageName());
startService(intent);
super.onTaskRemoved(rootIntent);
}
و در آخر اینو اول متد onStartCommand بنویسید
onTaskRemoved(intent);
توجه کنید که برای تست سرویس شما حتما باید از برنامه تون generate sign apk بگیرید در حالت تست با مشکل برمی خورید.
سلام از این آموزش استفاده کن . برای من که داره درست کار میکنه. مصزف باتری هم زیاد نیستش توی این روش:
لینک : ایجاد سرویس در اندروید
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .