Ich arbeite an einer Geofence App für Android. Mit Hilfe der example von Google und Refactoring von IntentService
bis BroadcastReceiver
wie beschrieben here Ich habe jetzt eine App, die wie erwartet funktioniert, wenn App im Hintergrund ist. Was ich nicht geschafft habe ist, wie ich meine App z. ein Modell, wenn die App getötet wird? Meine GeofenceReceiver
wird ausgelöst/angerufen, während die App getötet wird, aber meine BroadcastReceiver
Nachricht wird nicht in meinem MainActivity
empfangen.Wie aktualisiert man die geschlossene/getötete App von IntentReceiver?
In meinem GeofenceReceiver
ich so etwas tun, wenn ich einen Geofence-Übergang erhalten:
1:
Intent notificationIntent = new Intent(context, MainActivity.class);
notificationIntent.putStringArrayListExtra(Constants.TRIGGERING_GEOFENCE_IDS_KEY, triggeringIDs);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(notificationIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))
.setColor(Color.RED)
.setContentTitle(notificationDetails)
.setContentText(context.getString(R.string.geofence_transition_notification_text))
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setContentIntent(resultPendingIntent);
builder.setAutoCancel(true);
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, builder.build());
2:
Intent broadcastIntent = new Intent(ACTION);
broadcastIntent.putExtra("resultCode", Activity.RESULT_OK);
broadcastIntent.putExtra(Constants.BUNDLE_KEY, bundle);
LocalBroadcastManager.getInstance(context).sendBroadcast(broadcastIntent);
Wie ich bereits gesagt, die Sendung empfangen wird in meiner MainActivity
, wenn die App im Hintergrund ist. Wenn ich die App kille, wird die Sendung nicht in meinem MainActivity
empfangen. Ich habe das mit Terminal und Logcat überprüft.
Irgendwelche Ideen?
Also was meinst du ist erhalten Sie eine Sendung in Ihrem BroadcastReceiver, aber Sie bekommen es nicht in Ihrer Haupttätigkeit? – cafebabe1991
@ cafebabe1991 Grundsätzlich ja. Mein GeofenceReceiver wird immer noch für Geofence-Übergänge aufgerufen, selbst wenn die App beendet wird, aber dann kann ich nicht etwas an meine MainActivity senden. – wman