1

これはすべて私自身のアプリと関係があります。

2つのケースがあります。まず、私の活動が一番上にあり、すべてがうまく機能しています。私のサービスは情報をブロードキャストし、私のアクティビティはその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);
4

1 に答える 1

1

まず第一に、myActivity.bringToFrontのようなアクティビティを前面に表示する直接コマンドはありません。代わりに、インテントメカニズムを介してAndroidにそれを行わせる必要があります。

したがって、アクティビティを前面に表示する場合は、startActivityを呼び出して、正しいフラグを使用してインテントを渡す必要があります。たとえば、フラグ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); 

お役に立てれば...

于 2013-01-20T01:57:30.543 に答える