Activityのライフサイクル Androidアプリってどんな風に動いてるの?
こんにちは、鬱太郎です。今日はAndroidアプリのライフサイクル「アクティビティのライフサイクル」について学んだのでそれをまとめたいと思います。
Activityクラス
上記ドキュメントから、クラスは
package android.app; public class Activity extends ContextThemeWrapper implements LayoutInflater.Factory2, Window.Callback, KeyEvent.Callback, View.OnCreateContextMenuListener, ComponentCallbacks2
ということがわかります。継承の詳細は
パッケージ名 | クラス名 |
---|---|
java.lang | Object |
android.content | Context |
android.content | ContextWrapper |
android.view | ContextThemeWrapper |
android.app | Activity |
実装の詳細と主な内容は
インターフェース名 | 主な内容 |
---|---|
LayoutInflater.Factory2 | 引数を元に新しいViewを作る関数を実装する |
Window.Callback | ディスプレイに関するイベントのコールバック関数を実装する |
KeyEvent.Callback | キーボードに関するイベントのコールバック関数を実装する |
View.OnCreateContextMenuListener | メニューを生成する関数を実装する |
ComponentCallbacks2 | システムが設定を変更したり、メモリが少なくなった際に呼ばれるコールバック関数を実装する |
すべてのフィールドやメソッドを説明しきれないほど、Activityクラスは継承・実装がなされています。
アクティビティの状態遷移
アクティビティーには基本的に3つの状態があります。
1.実行中(再開)状態
アクティビティが画面上にでて、ユーザーが操作できる状態。
2.一時停止状態
他のアクティビティが画面上に出てメインに表示されているが、このアクティビティも表示されている状態。このアクティビティの上に他のアクティビティが表示されているが、画面すべて覆われているわけではない状態。システムによっては強制終了される場合もある。
3.停止状態
他のアクティビティによって完全に見えない状態。アクティビティがバックグラウンドにある状態。システムによっては強制終了される場合がある。
通常は1の再開状態ですね。ホームボタンなどでアプリを終了し、右下のボタンからアプリを開ける状態を3の停止状態といえます。
Activityのメソッドとアクティビティの状態の関係
公式サイトにある図から
アクティビティの状態遷移の際に呼ばれるメソッドは 起動→実行中(再開状態)
onCreate->onStart->onResume
実行中→一時停止状態
onPause
一時停止状態or実行中→停止状態
(onPause->)onStop
一時停止状態→実行中
onResume
停止状態→実行中
onRestart->onStart->onResume
→終了
(onPause->onStop->)onDestroy
一番重要なメソッドはonCreate
Activityで一番重要なコールバックメソッドはonCreateです。上記にあるアクティビティのライフサイクルの図からも分かりますね。アクティビティが起動でした際に、プログラマが一番最初に操作できるメソッドがonCreateです。ここでレイアウトを設定したり、Listenerを設定したりします。
実際にプログラムを作って確かめてみよう
Activityのコールバックメソッドを追加
Android Studioを起動させ、各コールバックメソッドを追加しましょう追加した例は以下のようになります。
実行確認
実際にVMで実行してみて、いつコールバックメソッドが呼び出されるかを確認していきましょう。
説明しやすくするため私は各コールバックメソッドの末尾に
try{ Thread.sleep(1000); }catch(InterruptionException e){ e.printStackTrace(); }
を追加しました。コールバックメソッドが呼ばれ、メッセージを出力した後に1秒待機するものです。ですが、コールバックメソッドで長期間処理するのは好まれないと思うので、今回のテストだけにします。
起動→実行中(再開状態)
アプリを起動
「onResume」の後に画面が初期化されているのがポイントです。
一時停止状態or実行中→停止状態
ホームボタンを押す
ホームボタンを押した瞬間に「onPause」画面からアプリケーションが消えた後に「onStop」が呼び出されているのがポイントです。
履歴から別のアプリケーションを起動
履歴ボタンを押した瞬間に「onPause」画面が完全に小さくなってから「onStop」となるのがポイントです。
停止状態→実行中
履歴からアプリを起動
アプリを選択した瞬間に「onRestart」画面が表示されたままの状態でアプリが起動「onStart」「onResume」と続きます。停止状態でもアプリの状態を保存しているため、初回の起動時のように「onResume」まで待たなくても画面が出現します。
→終了
履歴からアプリを消去
アプリを消去したと同時に「onDestroy」が出現onDestroyメソッド中のsleepを待たずに画面が消えました。
終わりに
アクティビティのライフサイクル、いかがでしたか?私の知識経験不足のため、不完全なまとめとなってしまったこと申し訳なく思っています。
いろいろ調べてみた結果、onCreate以外使わないな!ってことがわかりました。そんな高度な開発しないですね。。。
記事書いてる最中に「あ、これ使わないな!」と思ったけど(ここまで書いたし、もったいないから投稿しよう)ということで、今回投稿しました。
ここまでご覧いただき、誠にありがとうございます。
またね(‘ω’)ノ
p.s.
関数とメソッドやActivityとアクティビティの表記ゆれ、ごめんなさい。Javaだとメソッドと統一したほうがいいのでしょうけれど、文字数の関係上(あるいはミス)関数としたりしています。アクティビティとActivityは前者がアプリケーション全体のことを指し、後者がクラスのように内部構造を表すものと認識しています。
リンク等まとめ
名称 | リンク先 |
---|---|
Activityクラスドキュメント | https://developer.android.com/reference/android/app/Activity.html |
アクティビティについて | https://developer.android.com/guide/components/activities.html?hl=ja |
Javaのインストール方法(2017年8月 最新版) jdk1.8
こんにちは、鬱太郎です。Androidプログラムを作るためにまず、Javaをインストールします。今回はそれについてまとめてみました。
解説動画
インストールに関する動画を作成しましたので、文章だけではよくわからない人はぜひご覧ください。(※注意:ゆっくりボイスを使用しています。)
Javaをインストールしよう
直接ダウンロードする場合のリンク(Java SE Development Kit 8 - Downloads)または、
検索エンジンにて「Java SE ダウンロード」と入力
URL欄が「www.oracle.com」から始まる「Java SE ダウンロード - Oracle」 をクリック(沢山の方がJavaのダウンロード方法について書かれているため、なかなか公式サイトにたどり着けないことがあります。そのため、公式サイトのURL「www.oracle.com/~」のようになっているか、確認しましょう。)
すると、別のページに促されるので「こちら(USサイト)」をクリック
今回インストールするのはJava Platformなので左側を選択
上下に項目がありますが、上の「Java SE Development Kit ~~」をダウンロードします。そのために規約に同意する「Accept License Agreement」をチェックしましょう。
自分に合ったOSのものをインストールしましょう。
- Windows32bit版:Windows x86
- Windows64bit版:Windows x64
- Mac OS版:Mac OS X
ダウンロードが完了し、実行します。インストールはそのまま「次へ」を選択して構いません。
すべて終了し、インストールが完了します。
システム情報を使った32bitと64bitの見分け方
もし、Windowsを使われている方で、自分の使っているOSが32bit版か64bit版かわからい。という方もいらっしゃるでしょう。その見分け方を説明します。ご自身ですでに理解されてる方はこの項目は飛ばしてください。
Windowsに付属しているアプリケーション「ファイル名を指定して実行」を使います。
- スタートメニューから「ファイル名を指定して実行」を選択
- キーボードにある「ウィンドウズボタン」と「R」を同時押し
することでそのアプリが起動します。名前欄に「msinfo32」を入力(もしくは「winmsd」)してOKを選択してください。
すると、システム情報というアプリケーションが立ち上がります。
システム情報の中にある「システムの種類」の値から、
- x86 32bit版
- x64 64bit版
ということがわかります。
環境変数を設定しよう
インストールをした後、環境変数を登録する必要があります。環境変数には、
- Java Development Kitフォルダの場所
- Java実行ファイルがあるフォルダの場所
- Javac実行ファイルがあるフォルダの場所
を登録する必要があります。2と3は同じフォルダにあるので、
- JAVA_HOME変数にjdkのフォルダの場所を登録します。
- Path変数にJavaおよびJavacがあるフォルダの場所
まず環境変数を登録するためのウィンドウを開きましょう。
「ファイル名を指定して実行(ウィンドウズボタンキーとRキーの同時押し)」から「sysdm.spl」を名前欄に記入してOKを選択してください。
すると「システムのプロパティ」が開きます。それにある「詳細設定」タブをクリックしましょう。
「詳細設定」タブで開いた画面の右下に、「環境変数」というものがあるのでそこをクリックしてください。
そこから環境変数を登録していきます。
JAVA_HOME変数を登録
システム環境変数の新規を選択します。
- 変数名:「JAVA_HOME」
- 変数値:「C:\Program Files\Java\jdk1.8.0_144」※ダウンロードしたバージョンによって変化します
jdkを間違えてjreにしないように注意しましょう。OKを押して、JAVA_HOME変数の新規作成は完了です。
Path変数に追加
今度はもとからある環境変数「Path」に要素を追加します。システム環境変数にある「Path」変数を選択し、編集ボタンを押します。
元からある変数値をいじらないように注意しながら、変数値の最後にカーソルを合わせます。
変数値の区切り文字である「;」セミコロンを入力します
Windows10の方は、右上にある「新規」をおして、一番最後に変数値を追加してください。
追加する変数値はデフォルトで「C:\Program Files\Java\jdk1.8.0_144\bin」です。
その後、開いてる画面をすべてOKを選択して環境変数の登録が完了します。お疲れ様です。
コマンドプロンプトで実行確認
最後に、コマンドプロンプトで実際にJava、Javacコマンドを実行して動作確認をしましょう。「プログラムを指定して実行」(ウィンドウズボタンキーとRキー同時押し)でcmdと入力します。
コマンドプロンプトで「java -verion」と入力しエンターキーを押します。
バージョン情報が出力されたら成功です。次に「javac -version」と入力。
こちらも、バージョン番号が出力されたら成功です。
以上で環境変数の登録が完全に完了しました。お疲れ様です。
コマンドプロンプトでエラーが出た場合
コマンドプロンプトでエラーが起きた場合、
- 環境変数の登録が間違っている
- 環境変数は間違っていないが、Javaのインストールに問題があった
などが問題になります。とくに、環境変数の登録が間違っている可能性は
- 変数名(JAVA_HOMEやPath)のスペルが間違っている
- 変数値が一部間違っている
- jdkのところをjreとしてしまっている
などがあります。再確認しましょう!
終わりに
いかがでしたか?Javaのインストールできましたでしょうか?質問等ありましたらコメントしていただいて構いません。
次はAndroid Studioのインストール方法を紹介したいと思います。よろしくお願いします。
p.s. Markdown記法というのを記事製作中に知りました…( ;∀;) 次回からはその記法でチャレンジしてみたいと思います_(:3」∠)_