как да събуждам моята услуга за намерения на всеки 5 минути

Знам, че този въпрос е задаван и преди, но не получих никакъв отговор, искам да създам услуга за намерение, която да изпълнява нишка през цялото време, но когато изляза от приложението, услугата ми се спира, след което нишката също спира. Трябва да създам нещо, което да събужда услугата на всеки няколко минути. или нещо, което да предотврати убиването на услугата, дори когато приложението е убито или затворено.

така започвам услугата си

Intent intent= new Intent(Intent.ACTION_SYNC,null,this,IntentServ.class);
startService(intent);

person Malo    schedule 22.05.2015    source източник
comment
Използвайте нормална услуга вместо IntentService   -  person Chandrakanth    schedule 22.05.2015
comment
AFAIK можете да използвате едно wakefulbroadcast с един манипулатор... също alarmmanager ще ви помогне тук,,,, опитахте ли го   -  person Ranjit    schedule 22.05.2015
comment
Нормалната услуга работи за определен период от време, докато услугата за намерение работи за много време, тогава услугата за намерение е най-полезна   -  person Malo    schedule 22.05.2015
comment
моля, вижте....stackoverflow .com/questions/13820596/   -  person    schedule 22.05.2015
comment
@Malo.. не е така...Ако създавате друга нишка в рамките на услугата си, тогава ще бъде по-удобно да правите дълго изпълнявани задачи в нея, отколкото услугата за намерения   -  person    schedule 22.05.2015
comment
дали нормалната услуга няма да спре, когато приложението бъде убито? @Вирен   -  person Malo    schedule 22.05.2015
comment
за това трябва да добавите START_STICKY като израз за връщане в метода onStartCommand на услугата   -  person    schedule 22.05.2015
comment
прав си, създавам услуга с START_STICKY в допълнение към мениджъра на аларми, за да го събуждам на всеки 1 час, искам да попреча на устройството да заспива сега :)   -  person Malo    schedule 22.05.2015
comment
опитвам се да предотвратя заспиване на устройството, мислихте ли, че мениджърът на аларми не заспива устройството @Viren   -  person Malo    schedule 22.05.2015


Отговори (3)


За това можете да използвате AlarmManager, който може да стартира вашата услуга за всеки 1 час. Например :

 AlarmManager mgr = (AlarmManager) context
                .getSystemService(Context.ALARM_SERVICE);
 Intent notificationIntent = new Intent(context,
                UpdateService.class);
 PendingIntent pendingIntent=PendingIntent.getService(context, requestCode, Intent.parseIntent(), 0);
  mgr.setInexactRepeating(AlarmManager.RTC_WAKEUP,
        System.currentTimeMillis(), AlarmManager.INTERVAL_HOUR, pendingIntent);
person Kartheek    schedule 22.05.2015
comment
благодаря, създавам мениджър на аларми в допълнение към нормалната услуга и работата му сега се опитвам да попреча на устройството да заспива, мислихте ли, че мениджърът на аларми не заспива устройството? - person Malo; 22.05.2015
comment
AlarmManager не пречи на устройството да заспи, но ако искате устройството да се събуди, когато се задейства аларма, можете да използвате AlarmManager.RTC_WAKEUP, докато се регистрирате, в противен случай можете да използвате AlarmManager.RTC. developer.android.com/reference/android/app/AlarmManager.html - person Kartheek; 22.05.2015
comment
защо не просто застъпничество за START_STICKY и спестяване на ресурси? - person kiranpradeep; 23.05.2015

AlarmManager и PendingIntentса това, от което се нуждаете в този случай. Следвайте примера по-долу:

AlarmManager am = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);

/* --- Създаване на чакащо намерение, което ще се изпълни при събуждане --- */

PendingIntent operation = getUpdatePolicyOperation();
am.set(AlarmManager.RTC, alarmTime, operation); // alarm time is millisecond time in milliseconds that the alarm should go off, using the appropriate clock (depending on the alarm type).

Можете да прочетете повече за режима на аларма в AlarmManager в тук или вземете урок в Тук

Надявам се да е помогнало.

person Thai Phan Dinh    schedule 22.05.2015
comment
много ви благодаря, бих искал да приема повече от отговор :) - person Malo; 22.05.2015
comment
Опитвам се да попреча на устройството да заспи, мислихте ли, че мениджърът на аларми не заспива устройството? - person Malo; 22.05.2015

Използвайте нормално Service с android.app.AlarmManager.

Не е необходимо да използвате WakefulBroadcastReceiver.

person Injury    schedule 22.05.2015