/ / Ako začať aktivitu 5 minút po ukončení aplikácie? - Android

Ako začať činnosť 5 minút po ukončení aplikácie? - Android

Hľadám riešenie, ako vytvoriť alarm, ktorý po ukončení aplikácie spustí novú aktivitu (alebo desať minút, ak sa užívateľ rozhodne). Bolo by to neopakujúce sa, len raz.

Pozrel som sa na TimerTask a Handlers, ale zdá saaby fungoval iba vtedy, keď je aplikácia v popredí. AlarmManager vyzerá, že by to mohol urobiť, ale neviem ako sa k tomu priblížiť. Máte nejaké návrhy?

Edit1: Tu je to, čo mám v MainActivity:

Intent intent = new Intent("wake_up");
intent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, 5000, pendingIntent);

Toto je BroadcasReceiver:

 @Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent();
i.setClassName("(packagename)", "(whole class name)");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}

A ako som to zaregistroval v Manifeste (ako iné aktivity):

<receiver
android:name="FakeCallBroadcastReceiver" >
</receiver>

Dal som toast do vysielania BroadcastReceiver a funguje to, ale zdá sa to okamžite - mení sa čas z 5 000 na to, aby sa povedalo, že 10000 nič nezmení.

odpovede:

3 pre odpoveď č. 1

Pridať toto onCreate() metóda v Application inštancia alebo hlavné Activity:

Intent intent = new Intent("wake_up");
intent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
PendingIntent pending = PendingIntent.getBroadcast(this, 0, intent, 0);

AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 5000, pendingIntent);

a začnite Activity v BroadcastReceiver:

public class AlarmReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
context.startActivity(...);
}
}

Registrovať BroadcastReceiver s filtrom zámeru:

<receiver android:name="AlarmReceiver">
<intent-filter>
<action android:name="wake_up" />
</intent-filter>
</receiver>

2 pre odpoveď č. 2

Správca alarmov je určite spôsob, ako ísť. Na prijatie budíka budete potrebovať prijímač vysielania a potom v tomto prijímači nastavíte čakajúci zámer.

Ako ste už spomenuli, TimerTask a Handlers vám tu veľmi nepomôžu.

Najjednoduchší spôsob, ako ísť s prijímačom vysielania, je zaregistrovať ho v manifeste android ako prijímač vysielania. Môžete ich tiež zaregistrovať ručne, ale z koncepčného hľadiska je to trochu ťažšie.

Bavte sa!