如何从IntentReceiver更新关闭/终止的应用程序?

时间:2017-02-16 08:30:57

标签: android broadcastreceiver updates android-geofence

我正在开发适用于Android的地理围栏应用。在example的帮助下,从IntentServiceBroadcastReceiver重构,如here所述,我现在有一个应用程序,如果应用程序在后台运行,可以按预期工作。我没有管理的是如何更新我的应用程序,例如如果应用程序被杀死的模型?应用程序被杀后,我的GeofenceReceiver被触发/调用,但我的BroadcastReceiver未收到MainActivity消息。

GeofenceReceiver我做了类似的事情,如果我得到地理围栏过渡:

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

正如我已经说过,如果应用程序处于后台,我的MainActivity收到广播。如果我杀了应用程序,我的MainActivity就不会收到广播。我用终端和logcat检查了它。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

由于应用程序已被杀死,因此必须重新启动。可以使用BroadcastReceiver类中传递的上下文启动应用程序。请参阅下面的代码段,向您的活动发送geoFence数据。

--save-dev