Android 用の GPS ベースのアプリケーションを作成しています。GPS をオフにするアプリケーションを終了するボタンが必要ですが、戻る矢印やホームでプロセスをオフにしたくありません。
私はこのスレッドや、やりたいことをやりたくない理由を説明する素晴らしい仕事をしている他の多くのスレッドを読み ました。問題は、バックグラウンド プロセスがあり、アプリケーションから矢印を戻すだけで GPS が実行されたままになることです。OnStop() または OnPause() でこれらをオフにできることは理解していますが、戻る矢印またはホームで何かを停止させたくありません。ユーザーがメイン画面で EXIT を押して終了を確認し、クリーンアップを行う別の画面に移動しない限り、ユーザーが何をしても、すべての GPS とハンドラーを実行し続ける必要があります。そうすれば、ユーザーは、誤ってヒットした場合に実際に終了することなく、終了画面から矢印を戻すことができます。
このアプリケーションは、グローブを着用した悪条件の明るい日光の下で使用されることをご理解ください。何かを読むのは非常に難しいので、高さ 100 のハイ コントラスト フォントを使用しています。ユーザーが本当に停止したくない限り、停止することはできません。しかし、放置しているだけでバッテリーが死んでしまいます。バッテリーが切れるという考えだけで、システムの動作に問題はありません。偶然かもしれませんが、単純なボタンを押してサービスを停止させたくありません。このアプリのバックグラウンド プロセスを強制終了するのは、電話の電源を切るのと同じくらい難しいことですが、できるようにしたいのです。
私は、最後の 3 時間のグーグルで見た、単なる戻る矢印である finish() と他のすべてのメソッドを試しました。EXIT ボタンを GPS をオフにするボタンに変更することを考えましたが、ユーザーが戻る矢印を使用して終了すると、メイン ページに戻り、GPS がオンに戻ります。
ただ明確にします。私のアプリにはメニューベースのメイン画面があります。戻る矢印をクリックすると、有用なページはそのメニューに戻ります。メニュー項目の 1 つが EXIT です。そのメニュー項目を押すと、EXIT というボタンのある終了画面に移動します。ユーザーが偶然ここに来た場合は、戻る矢印でメニューに戻ることができます。彼が終了ページの [終了] ボタンをクリックすると、すべてのハンドラーと GPS をオフにして、電話またはタブレットのホーム画面に移動できます。少なくともそれが私が望んでいることであり、どうすればよいかわかりません。
OnStop() または OnPause() を使用して GPS をオフにする同様のアプリを使用しましたが、面倒です。それは私が望むものではありません。それが私がやりたいことだと言わないでください。私はそれを行う方法を知っています。それは私が求めていることではありません。
ありがとう。
アップデート:
クリスのおかげで、私はこれをほとんど解決しました。EXIT ボタンでハンドラーと GPS をオフにしてから、このコードを実行できます。
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
更新 #2 さらなるテストで見つけた問題は、アプリケーションが 2 回目に呼び出されたときに、アプリケーションが EXIT 画面に戻ることです。
更新#3 追加finish(); startActivity(startMain) が機能しているようです。仕上げはメインメニューへ戻る矢印です。うまくいけば、すべてのコードをインストールしたら、引き続き機能します。上記の 3 行目を削除したので、次のようになりました。
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startActivity(startMain);
finish();