0

新しい活動を始めるのにいくつか問題があります。私のアプリでは、意図をリッスンするブロードキャストレシーバーをセットアップしました(画面オフ)。画面がオフのとき、アプリは新しいアクティビティを開始する必要があります (もちろん、特定の条件下で。私はスパムアプリを作成していません)。しかし、そうでない場合もあります。

マニフェストでそのアクティビティ「singleTop」を宣言したので、「onNewIntent」メソッドもオーバーライドします(これを伝えることが重要だと思います)しかし、ここにあります。

電話がスリープ状態になり、特定の条件が満たされると、画面に 2 つのアイコンが表示されます (マイ アクティビティ)。これらのアイコンをクリック可能にしました。2 番目のアイコンをクリックすると、現在のアクティビティを終了 (finish()) し、新しい CALL LOG アクティビティ (Android が所有) を開始します。私がそれを行うと、以前のアクティビティを元に戻す必要があります(レイアウトが異なります-アイコンが1つだけ-以前は2番目のアイコンと一緒に表示されました)が、電話がスリープ状態になった場合のみです。問題は、そうではないということです。私のLOGCATによると、すべての条件が満たされていますが、アクティビティのみが開始されていません。ここでアクティビティのライフサイクルに何が起こっていますか?

画面オフ レシーバーコード:

@Override
        public void onReceive(Context context, Intent intent) {
            Log.d("APP", "MAINSERVICE, Screen OFF");


            MissedCallObserver mco = new MissedCallObserver(MainService.this);

        if(!CallListener.isCallActive) {
            Log.d("APP", "MAINSERVICE, INSIDE IF ( call is not active )");

            if(mco.checkMissedCalls() > 0 || mco.checkUnreadSms() > 0) {
                Log.d("APP", "MAINSERVICE, calls calculated. IF entered. Next is starting activity");

            startHandleActivity();
            }
        }
    } // outer if


    } // ScreenOffReceiver




private void startHandleActivity() {


        Intent startH_Activity = new Intent(MainService.this, HandleActivity.class);
        startH_Activity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startH_Activity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(startH_Activity);


    }
4

1 に答える 1