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