djsaeedkhan

مشکل کار نکردن alarm-manager

2 ارسال در این موضوع قرار دارد

سلام. وقت بخیر.
من یه برنامه اندروید درست کردم و داخلش با alarm-manager قرار دادم که یه کاری هر مثلا1 ساعت یکبار انجام بشه. الان درست کار میکنه و حتی اگر موبایل روشن خاموش بشه بازم کار میکنه.
ولی اگر کاربر برنامه هایی که حافظه رم رو پاک میکنن(برنامه های غیرضروری یا باز) مثلا (Clean Master- Space Cleaner & Antivirus) یا اگر از تنظیمات رم گزینه پاک کردن، اجرا کنه  alarm-manager دیگه کار نمیکنه و تا برنامه دوباره باز نشه شروع به کار نمیشه.
راهی هست که بشه این مشکل رو حل کرد باسپاس
 

Intent alarmIntent = new Intent(getActivity(), ReceiverUpdateData.class);
AlarmManager manager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),
	Integer.parseInt(newValue.toString())*60*1000,
	PendingIntent.getBroadcast(getActivity(), 0, alarmIntent, 0));

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 1396/09/23, 21:09:17، djsaeedkhan گفته است :

سلام. وقت بخیر.
من یه برنامه اندروید درست کردم و داخلش با alarm-manager قرار دادم که یه کاری هر مثلا1 ساعت یکبار انجام بشه. الان درست کار میکنه و حتی اگر موبایل روشن خاموش بشه بازم کار میکنه.
ولی اگر کاربر برنامه هایی که حافظه رم رو پاک میکنن(برنامه های غیرضروری یا باز) مثلا (Clean Master- Space Cleaner & Antivirus) یا اگر از تنظیمات رم گزینه پاک کردن، اجرا کنه  alarm-manager دیگه کار نمیکنه و تا برنامه دوباره باز نشه شروع به کار نمیشه.
راهی هست که بشه این مشکل رو حل کرد باسپاس
 


Intent alarmIntent = new Intent(getActivity(), ReceiverUpdateData.class);
AlarmManager manager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),
	Integer.parseInt(newValue.toString())*60*1000,
	PendingIntent.getBroadcast(getActivity(), 0, alarmIntent, 0));

 

سلام

میتونید در کلاس service از onTaskRemove استفاده کنید که در واقع باید override بشه:

@Override
public void onTaskRemoved(Intent rootIntent){
  
  Intent alarmIntent = new Intent(getActivity(), ReceiverUpdateData.class);
  AlarmManager manager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
  manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),
  Integer.parseInt(newValue.toString())*60*1000,
  PendingIntent.getBroadcast(getActivity(), 0, alarmIntent, 0));
  
  super.onTaskRemoved(rootIntent); 
}

 

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری