百度推送收到消息时带参数启动activity
2016年2月19日 · 39 字 · 1 分钟
一般来说,在BPushReceiver的onNotificationClicked或者onMessage方法收到推送消息后会去启动一个activity。此时整个应用有以下几种状态:
- 应用进程不存在
- 应用进程存在,但是不在前台
- 应用进程存在,在前台
在BPushReceiver的onNotificationClicked或者onMessage方法中使用Intent来启动activity:
Intent intent = new Intent();
intent.setClass(context.getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
if (url != null && !url.isEmpty()) {
Bundle bundle = new Bundle();
bundle.putString("url", url);
intent.putExtras(bundle);
}
Log.d(TAG, "start app");
context.getApplicationContext().startActivity(intent);
需要注意的是,针对不同的应用状态,MainActivity中触发的方法也不同:
- 应用进程不存在时,onCreate被调用
- 应用进程存在,不管是不是在前台,onNewIntent被调用
针对以上状态,合理的使用onCreate和onNewIntent就可以在任何时候呆参数启动APP了。