Aanbevolen methode om een ​​geplande activiteit te starten bij het opstarten?

Im proberen om een ​​geplande activiteit te maken gaan uit elk uur of zo, allemaal werken op de achtergrond.

Op dit moment heb ik een BroadcastReceiver die opneemt wanneer het apparaat wordt opgestart. De BroadcastReceiver maakt een PendingIntent aan een activiteit (Called AlarmController) die creëert heeft alle noodzakelijke methoden die ik nodig heb om de geplande activiteit uit te laten voeren.

Hoe dan ook, dit lijkt niet te werken. Dit is hoe mijn BroadcastReciever-class onReceive {} eruit ziet als en is identiek aan mijn hoofdactiviteit onCreate {} (alleen voor testen)

    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();
    }

Dit werkt echt, behalve dat mijn app crasht bij het opstarten, maar de geplande activiteit werkt ... Om het even welke ideeën? Is dit "De manier om het te doen" of is er een meer aanbevolen manier? Proost!

Oplossing:

In plaats van dat een BroadcastReciever een activiteit aanroept, heb ik de BroadcastReciever een dienst laten starten. En veranderde mijn activiteit in een dienst, programmatisch en in manifest. Werkt goed!

0
waarom crasht de activiteit?
toegevoegd de auteur slayton, de bron

1 antwoord

Ik probeer elk uur een geplande activiteit uit te voeren, allemaal op de achtergrond.

Sta gebruikers toe andere opties te configureren, zoals het gebruik van een Melding , in plaats van te worden onderbroken door een activiteit die de voorgrond overneemt.

Op dit moment heb ik een BroadcastReceiver die opneemt wanneer het apparaat wordt opgestart.

U zou dat alleen nodig hebben om een ​​ AlarmManager schema in te stellen voor uw uurlijkse evenementen. Uw PendingIntent voor de AlarmManager kan een code zijn die u verkrijgt via getActivity() .

Dit lijkt echter niet te werken.

Als u een activiteit wilt starten, roept u startActivity() aan. Maak geen PendingIntent aan en direct verzend() de PendingIntent .

Verwijder ook getApplicationContext() en gebruik eenvoudig this .

behalve dat mijn app crasht bij het opstarten

Gebruik adb logcat , DDMS of het DDMS-perspectief in Eclipse om LogCat te onderzoeken en bekijk de stacktracering die aan uw crash is gekoppeld.

0
toegevoegd