Android通知刷新活动

时间:2013-11-22 16:25:09

标签: android android-intent notifications android-notifications

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

它适用于创建BUNDLE的AsyncTask。

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

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

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

在'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 Manifest中,DIALOG_ACTIVITY:

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

和SECOND_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>

IDEAS?

感谢很多!

1 个答案:

答案 0 :(得分:0)

试试这个:

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