Service و Broadcast Receiver در اندروید
![Service و Broadcast Receiver در اندروید](https://www.majidonline.com/file/width/800/993/matlab53.jpg 1x, https://www.majidonline.com/file/width/1600/993/matlab53.jpg 2x)
دارالترجمه رسمی
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
افزونه های سئو وردپرس
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
مشاوره و خدمات سئو
آژانس تخصصی "انجام سئو"؛ ارائه خدمات حرفه ای سئو سایت
آژانس تخصصی "انجام سئو"؛ ارائه خدمات حرفه ای سئو سایت
افزونه فرم ساز آسان
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
خرید ورق گالوانیزه رنگی
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
خودتان را اینجا معرفی کنید
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
پیش نیاز : تسلط مناسب به مفاهیم ابتدایی اندروید
سرویس ها در اندروید
هر سرویس باید با تگ <service> در manifest معرفی شود، سرویس ها میتوانند از طریق ()Context.startService و ()Context.bindService اجرا شوند، در اندروید میتوانید از کلاس Service استفاده کنید تا اپلیکیشن هایی بسازید که لازم است در پشت پرده عملیات خاصی را انجام دهند، برخلاف Activity که هنگامی که روبروی شما باشد کار میکند، سرویس ها در بک گراند سیستم فعالیت میکنند.برای مثال به سرویس زیر توجه کنید :
public class MyService extends Service {
// Unique Identification Number for the Notification.
// We use it on Notification start, and to cancel it.
private int NOTIFICATION = R.string.local_service_started;
/**
* Class for clients to access. Because we know this service always
* runs in the same process as its clients, we don't need to deal with
* IPC.
*/
public class LocalBinder extends Binder {
LocalService getService() {
return LocalService.this;
}
}
@Override
public void onCreate() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("LocalService", "Received start id " + startId + ": " + intent);
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return null;
}
@Override
public void onDestroy() {
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
مشخص کردن شروع سیستم :
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if ((flags & START_FLAG_RETRY) == 0) {
// TODO If it’s a restart, do something.
}
else {
// TODO Alternative background process.
}
return Service.START_STICKY;
}
همچنین اضافه کردن سرویس به Manifest :
<service android:enabled="true" android:name=".MyService"/>
همچنین اگر بخواهیم سرویس شروع به کار کند به صورت زیر عمل میکنیم :
// Create Intent
Intent intent=new Intent(this,MyService.class);
// start the service
startService(intent);
همچنین میتوان با دستور زیر به یک سرویس به صورت خودکار پایان داد :
stopSelf(startId);
مثال زیر یک مثال مناسب از سرویس ها میباشد، به آن دقت کنید :
public class VibrateService extends Service
{
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
// To Vibrate in a pattern
long pattern[]={0,800,200,1200,300,2000,400,4000};
v.vibrate(pattern, -1);
}
@Override
public IBinder onBind(Intent intent)
{
// TODO Auto-generated method stub
return null;
}
}
ویبره ای که انتظار داریم با رشته ی زیر نواخته خواهد شد :
long pattern[]={0,800,200,1200,300,2000,400,4000}
این رشته به این معنی است که ابتدا :
- 0 ثانیه حالت سایلنت داریم
- 800 میلی ثانیه ویبره
- 200 میلی ثانیه سایلنت
- 1200 میلی ثانیه ویبره
- و به همین ترتیب ادامه دارد
Broadcast Reciever در اندروید
Broadcast Reciever در اندروید به پیغام های همگانی گوش میدهد، برای مثال پیغام هایی مثل پیغام کم بودن شارژ تلفن هوشمند، پیغام رسیدن پیامک و ...انواع پیغام های Broadcast :
- پیغام های عادی Broadcast که ناهمگام یا asynchronous هستند، یعنی بدون ترتیب خاصی انجام میشوند و گاهی ممکن است به صورت همزمان انجام شوند.
- پیغام های طبقه بندی شده، اولویت دادن به این پیغام ها از طریق android:priority انجام میشود، عملیاتی هایی که priority یکسان دارند با ترتیب دلخواه اجرا میشوند.
BOOT_COMPLETED برای زمانی که بوت سیستم تمام شود :
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
SMS_RECEIVED برای زمانی که پیامکی برسد :
<receiver android:name=".SMSReciever">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
همچنین باید اجازه ی دسترسی را در فایل manifest تعریف کنیم :
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
برای کنترل این عملیات باید یک کلاس جاوا بسازیم و آن را از BroadcastReceiver ارث بری کنیم و در آن متد ()onReceive را override کنیم، درون این متد کارهایی که میخواهیم انجام دهیم را مینویسیم برای مثال هنگامی که یک پیامک رسید یا بوت تمام شد چه اتفاقاتی رخ دهد.
نظرات و سوالات کاربران