بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

استفاده از الارم منیجر 

مدیریت گفتگو
sun.of.god.7 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام 

 

اگه بخوام تو یه بازه زمانی خاص یه کدی اجرا بشه باید چیکار کرد ؟ 

یعنی نمیخوام یه صفحه ی جدید باز بشه 

 

فقط میخوام یه سری اطلاعات از سرور دریافت شه 

 

 

برای مثال هر دو ساعت یک بار اطلاعات جیسون از سرور به صورت خودکار تو دیتا بیس لوکالم وارد شه 

 

ایناش مهم نیس مشکل من اینه که نمتونم کد الارم منیجرشو بنویسم ک بدون باز شدن هیچ صفحه ای این اطلاعات رو خودکار دریافت کنه 

 

اگه راهنمایی کنین ممنون میشم 

نظرات

پاسخ‌ها 3

atf 10 سال پیش

شما باید از برودکست ریسیور استفاده کنید و متدی که می خواهید رو تو قسمت 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>

 

 

نظرات

sun.of.god.7 10 سال پیش
واقعا ممنون عالی توضیح دادی کارم راه افتاد
sun.of.god.7 10 سال پیش

ببخیشد الان یه مشکل دیگه ای پیش اومده اونم اینه که هر بار وارد نرم افزار میشم اطلاعات رو از سرور میگیره که من نمیخوام این اتفاق بیفته میخوام هر 2 ساعت یکبار این اتفاق بیفته چه کاربر وارد برنامه بشه یا نشه یا گوشی خاموش شه و روشن شه

 

 

برنامه کار خودش رو بکنه و فقط هر دوساعت یکبار اطلاعات رو بگیره

اگه راهی واسش هست

ممنون میشم کمک کنین

برای ست کردن الارم از این کد استفاده کردم

 alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),60 * 15000,pendingIntent);     

نظرات

sun.of.god.7 10 سال پیش
کسی نیست بتونه جواب بده ؟؟؟؟؟؟؟؟!!!
sun.of.god.7 10 سال پیش
کسی نیست بتونه جواب بده ؟؟؟؟؟؟؟؟!!!
sun.of.god.7 10 سال پیش
کسی نیست بتونه جواب بده ؟؟؟؟؟؟؟؟!!!
atf 10 سال پیش
خوب شما این رو تو باید تو یک سرویس صدا کنید که اولین بار که برنامه اجرا شد فعال بشه
atf 10 سال پیش
برای این که هر دو ساعت یکبار چک کنه عدد 15000 رو به مقدار دلخواه تغییر بدید
atf 10 سال پیش

یک کلاس سرویس ایجاد میکنیم

 
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 صدا بزنید تا قبل از هر چیزی اجرا بشه

نظرات

sun.of.god.7 10 سال پیش
ممنون از اینکه راهنمایی کردی ولی راستش زیاد از روشی که گفتی سر درنیاوردم خودم یه روشی روش پیاده کردم که داره جواب میده و درست کار کرده هربار که برنامه اجرا میشه یه اینتجری رو از دیتابیس میخونه که برای اولین بار خالیه یه شرط گذاشتم که چک کنه اگه این عدد نامساویه 10 باشه الارم اجرا شه و اگه مساوی بود اجرا نشه و بعد این شرط مقدار اون عدد رو 10 اینسرت میکنیم و برنامه فقط برای اولین بار الارم رو اجرا میکنه امیدوارم به درد بقیه هم بخوره ...

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