【Androidアプリ開発】アプリを終了させる方法

android_studio

※個人サイトだからここの説明を信用しすぎちゃだめよ

環境 Windows10 64bit Home Intel Core i7-7700 DDR4 16GB

Android Stdio 3.2

Java

Xperia X F5121 Android 8.0

戻るボタンを押すとアプリを終了しますか?って出てきて「はい」を押すとアプリ終了するやつあるじゃないですか?

まあダイアログの表示の仕方は適当にググってほしいんですけど、綺麗に終了させるのはどうやるんかなって疑問に思ったので書きますね

サイトを参考にテストアプリを作成

まあググったら解説出てくるんですけど、わかりやすく ここのサイト様とかもう答え出てます

finish() どうやらこれを使うのが良いらしいです

現在のアクティビティを閉じるモノですから最後のアクティビティで使えばOKってわけらしいです

……しかしTOP以外の場所で終了させるのはどうやるんですかね?

前のアクティビティが生きてる状態でアプリを終了させたいんやが!?

ってなわけで検証用アプリを作成しました

メインアクティビティ

サブアクティビティ

メインアクティビティにサブアクティビティに移動するボタンを設置

サブアクティビティには様々なボタンを配置

解説

んで、startActivity(intent)は言うまでもなく新しくアクティビティを生成してそちらに移動するわけですが、流れとしては…

アプリ起動→メインアクティビティ生成→ボタンを押す→サブアクティビティを生成して移動

この地点でfinishを押すと現在のアクティビティ(サブアクティビティ)が終了するだけなのでメインアクティビティに戻ります

ではmoveTaskToBack(true)は?

ホーム画面に戻ります 両方のアクティビティも生きています

android.os.Process.killProcess(android.os.Process.myPid())はfinishとほぼ同じ感覚です 引数にある対象のアクティビティをKillします(ここが違う) 通常はfinishを使いましょう

System.exit(0)は上記のものとそんなに変わらない(と思う)

ちなみにALLボタンは上記すべての終了コマンドをまとめたもので3つアクティビティ(プロセス)を終わらせます 移動ボタン押して4つ以上アクティビティを生成していると当然まだアプリは生きています(ホームには戻りますが)

自分で作っておいてアレですが意味のないボタンですね

ここまで書いといてアレですが解説サイトの一番下にAndroidマニフェストにちょいちょいすればfinish()ですべて終了できるって書いてありますね 非常に便利だと思います

ちなみにアクティビティをいくつか生成している状態でTOP以外のアクティビティをkillしてTOPに戻りたい場合は生成したアクティビティの数をカウントしておいてその分-1だけkillとかすれば良さそうですね

 

投稿者: フルムーン

デジタルな物が好きな一般人もどき

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください