完成所有打开的Activity并从BroadcastReceiver启动新的Activity

时间:2015-04-06 07:28:02

标签: android android-intent broadcastreceiver affinity

我编写了一个BroadcastReceiver,它负责根据条件启动不同的App-Activity。现在有可能应用程序已经打开。

在这种情况下,如何关闭所有打开的活动并从Receiver中启动一个新活动。

这里有任何建议!

1 个答案:

答案 0 :(得分:0)

根据我的代码段工作,它会显示带有所需消息的通知面板,点按它就会启动简单的启动画面。现在Splash屏幕是实际不显示的屏幕,但指导应用程序显示Front Activity。

private void showNotification(Context context, String message, int userId) {

        // Here it play tricky part. Since Splash is the Activity which never show. It just guide which Activity should show next.
        Intent intent = intent = new Intent(context, Splash.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        PendingIntent contentIntent = PendingIntent.getActivity(context, userId, intent , 0);
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context).setSmallIcon(R.drawable.ic_launcher).setContentTitle("Alarm").setContentText(message);
        mBuilder.setContentIntent(contentIntent);
        mBuilder.setDefaults(Notification.DEFAULT_SOUND);
        mBuilder.setAutoCancel(true);
        NotificationManager mNotificationManager =
                (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);       
        mNotificationManager.notify(userId, mBuilder.build());      
    }

从Splash Screen开始之前,只需调用finishAffinity(),就可以清除所有后台堆栈活动。