当前位置: 首页 > 知识库问答 >
问题:

Android通知刷新活动

穆鸿卓
2023-03-14

我有一个IntentService 9:00开始,每小时重复一次。

它与创建捆绑包的AsyncTask一起工作。

IntentService必须在对话框中显示一个活动(就像Viber用于消息一样),它显示此BUNDLE中的一部分数据,并且它必须创建一个显示相同部分数据的通知。如果用户单击通知,它将启动第二个活动,显示BUNDLE中的所有数据。

问题是:IntentService完成他的工作,显示活动并创建通知。但问题是,如果用户没有使用智能手机。一个小时后,IntentService重新启动,它完成了创建新捆绑包的工作。

使用下面的代码,通知被刷新,但不是活动。如果用户现在使用智能手机,他将在活动中看到旧捆绑包的数据,而不是新捆绑包。我必须刷新这个活动,很明显,如果用户点击通知,即使是开始的活动也必须刷新。

在'IntentService'中,"onHandleIntent(Intent Intent)"启动对话框活动:

Intent myIntent = new Intent(this.myContext, *DIALOG_ACTIVITY*);
        myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
        myIntent.putExtras(**BUNDLE**);
        this.myContext.startActivity(myIntent);

并创建通知:

Intent notifyIntent = new Intent(context, *SECOND_ACTIVITY*);
notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
notifyIntent.putExtras(**BUNDLE**);

PendingIntent pIntent = PendingIntent.getActivity(context, 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);

NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setSmallIcon(icon);
builder.setContentTitle(title);
builder.setContentText(longText);
builder.setWhen(System.currentTimeMillis());

builder.setContentIntent(pIntent);

Notification n = builder.build();
n.flags |= Notification.FLAG_AUTO_CANCEL;
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify(idNotification, n);

在Android清单中,DIALOG_活动:

    <activity 
        android:name="com.example.sample.DIALOG_ACTIVITY"
        android:launchMode="singleTask"
        android:taskAffinity=""
        android:excludeFromRecents="true"
        android:theme="@android:style/Theme.Dialog">
    </activity>

第二项活动:

    <activity 
        android:name="com.example.sample.SECOND_ACTIVITY"
        android:theme="@style/Theme.AppCompat"
        android:parentActivityName="com.example.sample.MainActivity" >
        <!-- Parent activity meta-data to support API level 7+ -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.sample.MainActivity" />
    </activity>

思想?

非常感谢!

共有1个答案

程正阳
2023-03-14

试试这个:

myList.setAdapter(adapter);

NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

Notification notification = new Notification(android.R.drawable.stat_sys_warning, 
                        "This is an important msg", 

System.currentTimeMillis());

ntent intent = new Intent(MainActivity.this, MainActivity.class);

PendingIntent pendingNotify = PendingIntent.getActivity(MainActivity.this,
                        0, intent, 0);

notification.setLatestEventInfo(MainActivity.this, "This is a demo", "Continue with yourwork.",pendingNotify);


nm.notify(0, notification);
 类似资料:
  • 在我的android应用程序中,两个月以来我一直无法解决这个问题,即使在尝试了堆栈溢出中发现的许多类似解决方案之后。我正在用ArrayAdapter填充listview。长时间按下listview的某个项目时,会出现一个对话框,要求确认。确认后,所选项目将从数组列表中删除,但在listview中,最后一个项目似乎已删除。当您关闭片段并返回到它时,您会看到正确的项目,但不会在关闭警报对话框后立即看到

  • 但我收到一条错误消息:

  • 我目前在活动A中。我收到通知,我想在单击通知时重新创建活动A(完成A,然后再次创建)。意向类似乎没有类似于Pending帐篷的标志。标记取消当前。

  • 我想在记录器服务运行时显示通知。用户应该能够在通知中直接暂停或停止记录器。所以我在通知中添加了两个按钮,并实现了一个BroadcastReceiver来处理按钮点击。 它几乎像我想要的那样工作,但有一个问题我无法解决。当用户单击按钮时,我想显示活动。这是我的代码: 目前执行每个按钮的正确操作,但如果用户单击时应用程序不可见,则不显示该应用程序。如何实现这一点? 有必要在这里实现BroadcastR

  • 单击通知、服务创建新活动和活动创建新服务? 我的应用MainActivity“OnCreate”创建一个“粘性”的服务。 在我的服务中,当有一些通知时,我会发布多个通知。除非用户进入应用程序并阅读通知,否则通知将在那里。在onStartCommand中检查新通知。 按下通知将发送打开MainActivity的意图。 有服务、主要活动和通知。 一段时间后,MainActivity被系统杀死。 单击通

  • 我已经实现了Android推送通知,我可以在应用程序运行时使用此方法扩展来处理它: 但我真正需要的是在我当前的活动中获取通知数据,以更新一些字段,以便用户实时查看。但我找不到一个方法来做到这一点。有人能帮帮我吗?