如何使用broadcastReceiver onReceive()将我的活动带到前面?

时间:2013-01-20 01:06:57

标签: android

所有这一切都与我自己的应用程序有关。

我有两个案例。首先,我的活动是最重要的,一切正常。我的服务广播信息,我的活动更新其GUI。

我的问题是,如果不存在,我不知道如何将我的活动带到前线。理想情况下,它前面的所有活动都将被关闭,而这一活动将被带到前面。我该怎么做?

broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            //what code do I put here to bring this activity to the front and close all other activities on top of it?
        }
    };

以下是我在下面的帖子的帮助下解决问题的方法。

            Intent i = new Intent();
            i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
            i.setClass(MyClass.this, MyClass.class);
            startActivity(i);

1 个答案:

答案 0 :(得分:1)

首先,没有直接命令将活动带到前面,例如myActivity.bringToFront。相反,你必须让android通过意图机制为你做这件事。

因此,如果您想将活动带到前面,则必须调用startActivity并使用正确的标志传递intent。例如,标志FLAG_ACTIVITY_CLEAR_TOP将完成您的工作。但是有一个问题,如果您在广播接收器或服务中使用startActivity,则无法设置此标志。所以在你的情况下,我认为你应该使用标志FLAG_ACTIVITY_NEW_TASK

以下是一个例子:

Intent i = null;
i = new Intent(context, My_activity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i); 

希望这会有所帮助......