Рэкамендуемы спосаб запуску планавай дзейнасці на запуску?

Im спрабуе зрабіць планавую дзейнасць сыходзіць кожную гадзіну або каля таго, усе які працуе ў фонавым рэжыме.

Цяпер у мяне ёсць BroadcastReceiver, што ўлоўлівае, калі прылада загружаецца. BroadcastReceiver стварае PendingIntent да дзейнасці (Called AlarmController), які стварае мае ўсе неабходныя метады, якія мне патрэбныя для стварэння запланаванай дзейнасці, каб сысці.

Як заўсёды, гэта не здаецца, працуе. Гэта як мой BroadcastReciever клас OnReceive {} выглядае як <�моцны> і з'яўляецца ідэнтычным да маёй асноўнай дзейнасці OnCreate {} (толькі для тэставання)

    Intent intent = new Intent(serviceactivirt.this, AlarmController.class);
    PendingIntent sender = PendingIntent.getActivity(serviceactivirt.this, 0, intent, 0);
    try {
        sender.send();
    } catch (CanceledException e) {
        Toast.makeText(getApplicationContext(), "FEJLSAN", Toast.LENGTH_LONG).show();
    }

Гэта на самай справе працуе, за выключэннем таго, што маё прыкладанне падае пры запуску, але запланаваная дзейнасць працуе ... Любыя ідэі? Ці з'яўляецца гэта «спосаб зрабіць гэта» ці ёсць больш рэкамендуемы спосаб? Ура!

рашэнне:

Замест таго, каб мець BroadcastReciever выкліку актыўнасці, я зрабіў BroadcastReciever запуску сэрвісу. І змяніў маё актыўнасць на Паслугу, programmaticly і ў маніфесце. Выдатна працуе!

0
чаму адбываецца збой актыўнасці?
дададзена аўтар slayton, крыніца

1 адказы

<�Р> Im спрабуе зрабіць планавую дзейнасць сыходзяць кожную гадзіну або каля таго, усе працуюць у фонавым рэжыме.

Калі ласка, дазваляюць карыстальнікам наладжваць іншыя параметры, такія як выкарыстанне Апавяшчэнне , а не перарывацца дзейнасці з больш пярэднім плане.

<�Р> На дадзены момант у мяне ёсць BroadcastReceiver, што ўлоўлівае, калі прылада загрузіцца.

Вам трэба будзе толькі тое, што стварыць AlarmManager расклад для пагадзінных падзей. Ваш PendingIntent для AlarmManager можа быць адзін вы атрымаеце праз getActivity() .

<�Р> Як заўсёды, гэта не здаецца, што працуе.

Калі вы хочаце пачаць дзейнасць, выклік startActivity() . Не стварайце PendingIntent , то неадкладна адправіць() клавішы PendingIntent .

Акрамя таго, пазбавіцца ад getApplicationContext() і проста выкарыстоўваць гэта .

<�Р> акрамя таго, што маё прыкладанне падае пры запуску

Выкарыстоўвайце ADB LogCat , DDMS або перспектыва DDMS ў Eclipse, каб вывучыць LogCat і паглядзець на след стэка, звязаны з грукатам.

0
дададзена