我正在使用GCMIntentService类扩展IntentService以获取通知,同时单击通知我可以启动我的活动。它的工作,但我无法完成我的活动所以我面临后按钮按下问题。
*代码*
Intent resultIntent = new Intent(this, MainActivity.class);
resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
// Set pending intent
mNotifyBuilder.setContentIntent(resultPendingIntent);
在此代码中,启动MainActivity并按下后退按钮两次,只有它存在于应用程序中,因为我无法完成通知点击中的活动。所以请帮我完成GCMIntentService类中的活动。
答案 0 :(得分:1)
因此,请帮助我完成GCMIntentService类中的活动。
这不是正确的答案。你想要的是确保任务对用户有意义,就后台堆栈而言。根据您应用的导航,可能需要在resultIntent
中添加以下标记之一:
Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
(如果您希望在后台堆栈上保留其他活动,但确保只有一个MainActivity
实例)
Intent.FLAG_ACTIVITY_CLEAR_TASK
和 Intent.FLAG_ACTIVITY_NEW_TASK
(如果您希望为此Notification
处理设置单独的专用任务,只留下任何现有任务;还需要清单中android:taskAffinity=""
元素中的<activity>
答案 1 :(得分:0)
在您的活动创建中或随时,您将注册自定义广播接收器:
registerReceiver(closeMyActivity, new IntentFilter("ex.my_app_name.my_custom_broadcast"));
这是您收到自定义广播以关闭活动的地方。
private final BroadcastReceiver closeMyActivity = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
if (null != intent && intent.hasExtra("aCloseActivity")) {
if(intent.getBooleanExtra("aCloseActivity", false)){
// Here you can close your activity
}
}
}
};
不要忘记在活动被销毁时取消注册广播接收器:
unregisterReceiver(closeMyActivity);
从您的服务发送广播:
getApplicationContext().sendBroadcast(new Intent("ex.my_app_name.my_custom_broadcast").putExtra("aCloseActivity", true));
我希望它有所帮助,但也等待其他回复,也许有更好的解决方案。