我的服务在打开持续通知时重置内部变量

时间:2013-02-23 22:11:47

标签: android android-intent android-service android-pendingintent

我有一个设置,我的活动启动服务,并通过控制服务行为方式的意图发送值。这些变量可以在服务的生命周期中发生变化,服务会将更新推送回活动UI。如果我退出活动并重新启动它,它将从服务请求更新以获取当前值。如果我通过主屏幕重新启动活动,或者如果我使用最近的应用程序菜单,这可以正常工作。但是,如果我通过我为服务设置的前台持续通知中的运行启动活动,则服务在启动时将自身重新设置为原始值。

这是我在前台代码中的运行,我认为还有其他任何事情都不会影响这个问题。

//Create notification and set to run in forground
    Notification notification = new Notification(R.drawable.ic_launcher, getText(R.string.app_name),
            System.currentTimeMillis());
    Intent notificationIntent = new Intent(this, MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    notification.setLatestEventInfo(this, getText(R.string.app_name),
            "Running Noise Based", pendingIntent);
    startForeground(ONGOING_NOTIIFICATION, notification);

更新3:

将标志Intent.FLAG_ACTIVITY_NEW_TASK,Intent.FLAG_ACTIVITY_CLEAR_TOP和Intent.FLAG_ACTIVITY_SINGLE_TOP添加到通知意图中解决了问题。我不知道为什么这些修复它。如果有人能告诉我为什么会这样,请做。这是有效的新代码。

//Create notification and set to run in forground
        Notification notification = new Notification(R.drawable.ic_launcher, getText(R.string.app_name),
                System.currentTimeMillis());
        Intent notificationIntent = new Intent(this, MainActivity.class);
        notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
            | Intent.FLAG_ACTIVITY_CLEAR_TOP
            | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        notification.setLatestEventInfo(this, getText(R.string.app_name),
                "Running Noise Based", pendingIntent);
        startForeground(ONGOING_NOTIIFICATION, notification);

0 个答案:

没有答案