1

私はBrodcastReceiverのAアクティビティとiBアクティビティに参加しています。

@Override
    public void onReceive(final Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            //start activity

            ((Activity) context).runOnUiThread(new Runnable(){
              public void run(){
                    Intent i = new Intent(context, Pause.class);
                    i.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK
                      | Intent.FLAG_ACTIVITY_CLEAR_TOP
                      | Intent.FLAG_ACTIVITY_SINGLE_TOP);

              context.startActivity(i);

                  }
                });

            wasScreenOn = false;

        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {

            wasScreenOn = true;
        }
    }

問題は、画面のロックを解除すると、アクティビティBが表示される前にアクティビティAが1秒間表示されることです。どうすれば修正できますか?

4

2 に答える 2

1

コードは良さそうです。これはアプリの問題ではありません。Android on Screen Unlock は、他のアプリでも同様の動作をします。おそらくこれは、システムが低電力状態から復帰した後に startActivity を一時停止する可能性があるためでもあります。そのため、UI を更新するとき、画面オフ中または画面オン後に再度アクセスすることをお勧めします。

于 2012-10-03T08:57:47.340 に答える
0

遅延がアニメーションのあるアクティビティから別のアクティビティへの遷移によるものである場合は、アニメーションを無効にする次のフラグをインテントに設定するだけで、アクティビティをすばやく表示できます。

Intent.FLAG_ACTIVITY_NO_ANIMATION

それでも遅延が解決しない場合は、処理に時間がかかっている可能性のあるアクティビティ B のコード (データベース呼び出しなど) を 内に配置してみてくださいAsyncTask

于 2012-10-03T08:59:06.090 に答える