مشکل در اجرای دوباره alarmManager
سلام
برنامه ای دارم که زمان های مورد نظر را می گیرد و در موعد مقرر هشدار های لازم را می دهد
در برنامه وقتی به زمان مورد نظر می رسد یک اکتیویتی اجرا شده و هشدار ساعت مورد نظر با پیغام مورد نظر را در دیالوگی می دهد اگر کاربر کلید ok را نزند مثلا خواب باشد دیالوگ باز شده بسته نمی شود یعنی اکتیوتی همچنان در حال اجرا می ماند و اگر مثلا یک دقیقه دیگر هشدار دیگه ای قرار باشد اجرا شود چون اکتیویتی برای هشدار قبلی باز مونده برای اجرای هشدار بعدی به مشکل می خورد
نمی دانم از چه راه حلی مشکل را حل کنم مثلا می شود در حالی که اکتیویتی باز است یه نمونه دیگه ای دوباره باز کرد
یا با استفاده از flag های همراه intent می شه مشکل رو حل کرد
منتظر راهنمایی دوستان هستم با تشکر
من نمی دونم کدت چیه ، بهتر بود کدت رو داخل سوالت می ذاشتی اما حدس می زنم با استفاده از کد زیر مشکلی پیش نیاد :
Intent intent = new Intent(context, AvtivityMain.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Application.context.startActivity(intent);
نکته اصلی این کد این خطه :
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
برای نمایش هشدار یه کلاس به نام AlarmDialog تعریف کردم که extends شده از activity و setContentView براش نذاشتم بلکه از داخلش یه دیالوگ نمایش داده می شود یعنی هر بار که این کلاس فراخوانده می شود با توجه به مقادیر دریافت کرده دیالوگ هشدار مقدار گرفته و نمایش می دهد نحوه صدا زدن این کلاس در کلاس ActivityMain به صورت زیر است
مشکلم اینه که اگر یکی از هشدارها به هر دلیل پاسخ داده نشود مثلا طرف خواب باشد هشدار بعدی که می خواهد نمایش داده شود چون هشدار قبلی بسته نشده است نمایش داده نمی شود
Intent intent = new Intent(ActivityMain.this, AlarmDialog.class);
intent.putExtra("list", list);
intent.putExtra("nameP", nameP);
intent.putExtra("fullTime", fullTime);
PendingIntent operation;
operation = PendingIntent.getActivity(getBaseContext(), i, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am;
am.setRepeating(AlarmManager.RTC_WAKEUP, alarmStart,24*60*60*1000, operation);
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .