用語解説

【Androidアプリ】Intentとは何か?分かりやすく説明

事前知識で必須

activityを理解していない人は以下の記事を参考にしてください。

【Androidアプリ】Activityとは何?分かりやすく説明androidのActivityについてメモしておきます。 androidはカタカナ言葉が多く読みにくいですね。 Activit...

Intentとは

Intentとは「今から画面を遷移するよ!」と何をコードでするかをコンピューターに知らせるために使う物(オブジェクト)のことです。オブジェクトとは、物という抽象的なものを想像して下さい。

何をコードでするかなので、画面遷移の命令でなくても大丈夫ということです。

よくわからないと思うので、実際のコードを見てみましょう。

画面遷移でIntentが必要

結果画面を表示(遷移)するコードです。

クイズアプリを作っているので、fun checkQuizCount()という関数やif(quizCount == …)などと書かれていますが、無視してください。

大事なコードは以下です。

//結果画面を表示
//新しいアクティビティを開くときにはIntentクラスを使う。contextには現在のアクティビティ、clsには表示するアクティビティをClassオブジェクトでかく。
val intent = Intent(this@MainActivity, ResultActivity::class.java)
//putExtra(取り出すときに使うキー、渡したい値)で遷移先に値を渡すことができる。
intent.putExtra("RIGHT_ANSWER_COUNT", rightAnswerCount)
//作成したintentstartActivityに渡すことでアクティビティを表示できる
startActivity(intent)
val intent = Intent(this@MainActivity, ResultActivity::class.java)

このコードでIntentが出てきています。

val intentでintentという変数を用意して、Intent()のオブジェクトを変数intentに代入しています。

Intent()オブジェクトの中身を見てみると、カンマ区切りで

左に

this@MainActivity

右に

ResultActivity::class.java

と書かれています。

左側に遷移元の画面の名前を書きます。

最初に表示されているのはMainActivityだったので、this@MainActivity

右側に遷移先の画面の名前を書きます。

次に表示したいのはResultActivityなので、ResultActivity::class.javaと書きます。

putExtraは遷移先に値を渡したいときに使うもので今回は関係ないので飛ばします。まあ、そのままですけどね。

話を戻して、intent変数にコンピューターに「MainActivityからResultActivityへ遷移してね!」というメッセージが入っているものをstartActivityというオブジェクトに渡します。

以上で、画面遷移をさせることができ、Intentというものがなんとなくわかったのではないでしょうか?

他の例も見ていきます。

Serviceを使う際にIntentが必要

Serviceとは目に見えるデザインを持たずに、バックグラウンドで動く部品(コードの集まり)のことです。

具体的には、音楽アプリなどのバックグラウンド再生はこのServiceを使っています。

このServiceと呼ばれる部品を使うには、Intentが必要というわけです。

val intent = Intent(this@MainActivity,SampleService::class.java) 
startService(intent)

先ほどの画面遷移と同じように、変数intentにIntent()を代入しています。

SampleServiceというクラスにServiceを継承させ、SampleServiceでバックグランド再生ができるようになっています。

Intentには2つのタイプがある

Intentには明示的Intentと暗黙的Intentがあります。

小難しく言っているのがプログラミング業界だと思っているので、そのままの意味と捉えて問題ないと思います。

明示的Intentとは

今回の例で言えば、MainActivityからResultActivityへ明示的に示して処理を実行させました。

この特定のものを指定したIntentを明示的Intentと呼びます。

暗黙的Intentとは

何か明示的に指定しないで、マップアプリを開いてとSiriに言ったときに候補がいくつか出されると仮定します。

この処理のIntentを暗黙的Intentと呼びます。

COMMENT

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