[解決済み] アクティビティがフォアグラウンドにあるか、目に見えるバックグラウンドにあるかを確認する方法は?
質問
タイマーでスプラッシュスクリーンを表示させています。私の問題は、私が前に
finish()
を実行する前に、次のアクティビティが開始されたことを確認する必要があることです。
finish()
ユーザがダイアログボックスからオプションを選択すると、次のアクティビティが開始されます。
アクティビティがフォアグラウンドにあるかどうかを確認する方法について多くの質問があることは知っていますが、これによってアクティビティの上にもダイアログボックスができるのかどうかはわかりません。
赤は私の活動で、バックグラウンドにあり、ダイアログはフォアグラウンドにあります。
EDITです。
を使わないようにしてみました。
finish()
を使わないようにしてみましたが、そうすると、私の活動は、私が避けようとしているアプリケーションのスタックに戻ることができます。
どのように解決するのですか?
として推奨されているものです。 右 の解決策として推奨されているものです。
正しい解決策 (クレジット:Dan、CommonsWare、NeTeInStEiN) アプリケーションの可視性を自分で追跡するには Activity.onPause, Activity.onResume メソッドを使用します。visibility"ステータスを他のクラスに保存する。 を他のクラスに保存します。を実装したクラスがよいでしょう。 アプリケーションまたはサービス(このソリューションにはいくつかのバリエーションがあります。 サービスからアクティビティの可視性をチェックしたい場合は、このソリューションのいくつかのバリエーションもあります)。
例 独自のApplicationクラスを実装します(isActivityVisible()静的メソッドに注意)。
public class MyApplication extends Application {
public static boolean isActivityVisible() {
return activityVisible;
}
public static void activityResumed() {
activityVisible = true;
}
public static void activityPaused() {
activityVisible = false;
}
private static boolean activityVisible;
}
<ブロッククオート
AndroidManifest.xmlにアプリケーションクラスを登録します。
<application
android:name="your.app.package.MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name" >
<ブロッククオート
プロジェクト内のすべてのActivityにonPauseとonResumeを追加します(必要であれば、Activityの共通の祖先を作成しても構いません。 アクティビティに共通の祖先を作ることもできますが アクティビティがMapActivity/ListActivityなどから既に拡張されている場合は、以下のように記述する必要があります。 を手で書く必要があります)。
@Override
protected void onResume() {
super.onResume();
MyApplication.activityResumed();
}
@Override
protected void onPause() {
super.onPause();
MyApplication.activityPaused();
}
あなたの
finish()
メソッドでは
isActivityVisible()
を使用して、アクティビティが表示されているかどうかをチェックします。 そこでは、ユーザーがオプションを選択したかどうかもチェックすることができます。 両方の条件が満たされたときに続行します。
ソースは2つの間違った解決策にも言及しています...ので、それを行うことは避けてください。
ソースはこちら スタックオーバーフロー
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Androidアプリケーションのアクティビティ間でデータを受け渡すにはどうすればよいですか?
-
[解決済み] Androidのローテーションでアクティビティを再開する
-
[解決済み] アクティビティで本来追加されるウィンドウが流出した
-
[解決済み] Intentsを使用して、あるAndroid Activityから別のAndroid Activityにオブジェクトを送信するにはどうすればよいですか?
-
[解決済み】Androidで透明なActivityを作成する方法は?
-
[解決済み】AndroidサービスがActivityと通信する方法
-
[解決済み] FragmentPagerAdapterのgetItemが呼び出されない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Androidアプリがバックグラウンドになり、フォアグラウンドに戻ることを検知する方法
-
[解決済み] Android:アクティビティが実行されているかどうかを確認するにはどうすればよいですか?
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] プログラム的に電話をかけるには?
-
[解決済み] バイト配列の画像ファイルをビットマップに変換するには?
-
[解決済み] Android: ランドスケープモード用の代替レイアウト xml
-
[解決済み] 非ActivityクラスでContextを取得する [重複].
-
[解決済み] react nativeアプリのバージョン番号を更新する方法
-
[解決済み] AsyncTaskLoaderとAsyncTaskの比較
-
[解決済み] Androidの環境設定。ユーザーが環境設定画面を使用していない場合、デフォルト値を読み込むにはどうすればよいですか?