0

アラームによってトリガーされた BroadcastReceiver によって開始されるサービスがあります。このコンテキストでは、アプリのアクティビティは実行されておらず、メイン アクティビティを開始する必要さえありません。

サービスから、Intent.FLAG_ACTIVITY_NEW_TASK で設定されたアクティビティを開始しましたが、正常に動作しています。問題は、finish(); を呼び出した後、ユーザーがこのアクティビティをどのように破棄するかという動作にあります。

  1. このアクティビティがフォーカスされたときに別のアプリを使用している場合、それを閉じると、Android は以前使用していたアプリに戻るのではなく、アプリのメイン アクティビティに移動します。
  2. 携帯電話の画面がオフで、アクティビティが表示されている場合 (ウェイク ロックがある場合)、finish() を呼び出しても実際には「終了」しません。つまり、アクティビティはバックグラウンドに送信されるため、ロック画面は表示されますが、アクティビティは開いているアプリのリストに引き続き表示されます。スワイプするだけで本当に閉じることができます。

この場合、それらは通常の動作ですか?それらを回避する方法を知っている人はいますか?

ありがとうございました。

4

2 に答える 2

1

最初の問題については、特定のアクティビティをどのように開始し、終了時にどのコードが実行されるかのように、いくつかのコードを表示する必要がある場合があります。意図したアクティビティが実際に前面に表示される前に、ホーム アクティビティが開始される場合があります。目的のアクティビティを閉じると、再び前面に出てきます。

2 番目の質問については、正常な動作です。それは私と一緒にすべてのアプリで起こります。新しいバージョンの Android だけに当てはまるかどうかはわかりません。なぜそれらを避けたいのかわからない。

于 2013-11-07T00:53:30.313 に答える
0

問題は、マニフェストでアクティビティを宣言する方法です。これを適切に取得するには、宣言に android:excludeFromRecents="true" を含める必要がありました。また、インテント フィルター セクションから主なアクティビティを削除しました。

于 2013-11-07T13:56:27.077 に答える