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

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

sun.of.god.7  10 سال پیش  10 سال پیش
+1 0

سلام 

 

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

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

 

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

 

 

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

 

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

 

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

 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
atf  10 سال پیش
+4 0

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

 

 

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

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

 

 

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

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

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

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

 alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),60 * 15000,pendingIntent);     
0 0
کسی نیست بتونه جواب بده ؟؟؟؟؟؟؟؟!!! (10 سال پیش)
0 0
کسی نیست بتونه جواب بده ؟؟؟؟؟؟؟؟!!! (10 سال پیش)
0 0
کسی نیست بتونه جواب بده ؟؟؟؟؟؟؟؟!!! (10 سال پیش)
+1 0
خوب شما این رو تو باید تو یک سرویس صدا کنید که اولین بار که برنامه اجرا شد فعال بشه (10 سال پیش)
+1 0
برای این که هر دو ساعت یکبار چک کنه عدد 15000 رو به مقدار دلخواه تغییر بدید (10 سال پیش)
پاسخ به سوال 
atf  10 سال پیش
+2 0

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

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

0 0
ممنون از اینکه راهنمایی کردی ولی راستش زیاد از روشی که گفتی سر درنیاوردم خودم یه روشی روش پیاده کردم که داره جواب میده و درست کار کرده هربار که برنامه اجرا میشه یه اینتجری رو از دیتابیس میخونه که برای اولین بار خالیه یه شرط گذاشتم که چک کنه اگه این عدد نامساویه 10 باشه الارم اجرا شه و اگه مساوی بود اجرا نشه و بعد این شرط مقدار اون عدد رو 10 اینسرت میکنیم و برنامه فقط برای اولین بار الارم رو اجرا میکنه امیدوارم به درد بقیه هم بخوره ... (10 سال پیش)

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