استفاده از الارم منیجر
سلام
اگه بخوام تو یه بازه زمانی خاص یه کدی اجرا بشه باید چیکار کرد ؟
یعنی نمیخوام یه صفحه ی جدید باز بشه
فقط میخوام یه سری اطلاعات از سرور دریافت شه
برای مثال هر دو ساعت یک بار اطلاعات جیسون از سرور به صورت خودکار تو دیتا بیس لوکالم وارد شه
ایناش مهم نیس مشکل من اینه که نمتونم کد الارم منیجرشو بنویسم ک بدون باز شدن هیچ صفحه ای این اطلاعات رو خودکار دریافت کنه
اگه راهنمایی کنین ممنون میشم
شما باید از برودکست ریسیور استفاده کنید و متدی که می خواهید رو تو قسمت onReceive ایجاد کنید یا صدا بزنید
public class MainReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("LOG", "MainReciver");
}
}
و در کلاسی که خواستید آلارم منیجر رو صدا بزنید
فعال سازی آلارم منیجر و غیر فعال کردن آن به صورت زیر است
public static void startAlarm() {
AlarmManager alarmManager=(AlarmManager) A.context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(A.context, MainReciver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(A.context, 0, intent, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),60 * 15000,pendingIntent); //15 min
Log.i("LOG","startAlarm");
}
public static void cancelAlarm() {
AlarmManager alarmManager=(AlarmManager) A.context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(A.context, MainReciver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(A.context, 0, intent, 0);
alarmManager.cancel(pendingIntent);
Log.i("LOG", "cancelAlarm");
}
ایجاد تگ ریسیور در مانیفست یادتون نره
<receiver
android:name=".MainReciver">
</receiver>
ببخیشد الان یه مشکل دیگه ای پیش اومده اونم اینه که هر بار وارد نرم افزار میشم اطلاعات رو از سرور میگیره که من نمیخوام این اتفاق بیفته میخوام هر 2 ساعت یکبار این اتفاق بیفته چه کاربر وارد برنامه بشه یا نشه یا گوشی خاموش شه و روشن شه
برنامه کار خودش رو بکنه و فقط هر دوساعت یکبار اطلاعات رو بگیره
اگه راهی واسش هست
ممنون میشم کمک کنین
برای ست کردن الارم از این کد استفاده کردم
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),60 * 15000,pendingIntent);
یک کلاس سرویس ایجاد میکنیم
public class XService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
MainReciver.getData();
}
}
ایجاد تگ ریسیور در مانیفست
<service
android:name=".XService">
</service>
همون متدی هستش که اطلاعات شما رو از سرور می گیره
MainReciver.getData();
پیشنهاد میشه آلارم منیجر رو تو کلاس G صدا بزنید تا قبل از هر چیزی اجرا بشه
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .