Android - 将用户发送到 Activity 的 GCM 推送通知不会导致 onCreate 调用

Posted

技术标签:

【中文标题】Android - 将用户发送到 Activity 的 GCM 推送通知不会导致 onCreate 调用【英文标题】:Android - GCM push notification that sends user to Activity does not result in onCreate call 【发布时间】:2013-03-13 02:22:31 【问题描述】:

我能够创建推送通知,并将用户发送到我想要的任何 Activity,但我注意到每当用户登陆该 Activity 时,onCreate 函数都不会被调用。

应该是这样吗?如何设置才能调用Activity的onCreate?

这是我的活动:

public class QuestionActivity extends BaseListActivity 

    @Override
    public void onCreate(Bundle savedInstanceState) 

以下是通知的生成方式:

    Intent notificationIntent = new Intent(context, MainActivity.class);
    if ( notification_type != null && notification_type.equals("question"))
    
        notificationIntent = new Intent(context, QuestionActivity.class);
    
    else
    if ( notification_type != null && notification_type.equals("plan"))
    
        notificationIntent = new Intent(context, TopicActivity.class);              
    

    // set intent so it does not start a new activity
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0);        
    Uri defaultSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);            

    Notification notification = new NotificationCompat.Builder(context)
     .setContentTitle(title)
     .setContentText(message)
     .setContentIntent(intent)
     .setSmallIcon(icon)
     .setLights(Color.YELLOW, 1, 2)
     .setAutoCancel(true)
     .setSound(defaultSound)
     .build();

    notificationManager.notify(0, notification);

谢谢!

【问题讨论】:

@Override那些方法了吗?发布您的代码。 @323go 覆盖哪个方法?我应该发布哪些代码? 发布您用于启动活动的代码。 我刚刚发布了活动开始和创建推送通知的代码。 【参考方案1】:

您使用的标志Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP 表示如果活动已经在当前任务中运行,那么将使用旧的现有活动,而不是启动该活动的新实例。在这种情况下,onCreate 将不会被调用,因为该活动已经存在。

【讨论】:

@Genadinik 这取决于您要达到的目标。如果您的应用已经在运行,并且相关 Activity 已经存在,您真的需要创建该 Activity 的新实例,还是可以使用现有的? 好吧,我需要它来重新加载该屏幕,以便它可以从服务器中提取内容。 @Genadinik 好吧,也许您可​​以在onResume 而不是onCreate 中从服务器重新加载数据。是否使用这些标志的决定取决于您希望从通知中打开的 Activity 如何与应用程序的其余部分相关联(例如,当您从该 Activity 中点击返回按钮时将打开哪个 Activity) .

以上是关于Android - 将用户发送到 Activity 的 GCM 推送通知不会导致 onCreate 调用的主要内容,如果未能解决你的问题,请参考以下文章

将 ArrayList 的子级发送到 Android Activity

如何将数据从 Android Activity 发送到 Fragment [重复]

我想使用 json 将 Listview 数据发送到 Android 中的另一个 Activity

如何使用 Intents 将对象从一个 Android Activity 发送到另一个?

如何使用 Intents 将对象从一个 Android Activity 发送到另一个?

4) 十分钟学会android--建立第一个APP,启动另一个Activity