知りたいこと
Androidでブロードキャストに関するコードの質問です。
以下のソースの動きが分からないです。
ソースの結果は、画面にボタンが表示され、ボタンをタップすると受信しました
と表示されます。
該当のソースコード
java
1package com.example.broadcasttest; 2//https://android-java.hatenablog.jp/entry/2019/01/09/080000のコード 3 4import androidx.appcompat.app.AppCompatActivity; 5 6import android.content.Intent; 7import android.os.Bundle; 8import android.view.View; 9 10public class MainActivity extends AppCompatActivity { 11 12 @Override 13 protected void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15 16 //レイアウトファイルをViewにセット 17 setContentView(R.layout.activity_main); 18 19 //レイアウトファイルのボタンに直にクリックイベントリスナーを設定 20 findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { 21 @Override 22 public void onClick(View v) { 23 //ブロードキャストレシーバーに自作インテントを送信する 24 Intent intent1 = new Intent(); //空のインテントを生成 25 intent1.setAction("MY_INTENT"); //インテントのアクション名を設定 26 sendBroadcast(intent1); //インテントを送信 27 } 28 }); 29 } 30}
java
1package com.example.broadcasttest; 2//https://android-java.hatenablog.jp/entry/2019/01/09/080000のコード 3import android.content.BroadcastReceiver; 4import android.content.Context; 5import android.content.Intent; 6import android.widget.Toast; 7 8public class mBroadcastReceiver extends BroadcastReceiver { 9 @Override 10 public void onReceive(Context context, Intent intent) { 11 12 //送信されたブロードキャストを受信してトーストで表示 13 Toast.makeText(context, "受信しました…", Toast.LENGTH_SHORT).show(); 14 } 15}
xml
1 <!-- ブロードキャストレシーバーと受け取るアクション名「MY_INTENT」を登録 --> 2 <receiver android:name=".mBroadcastReceiver"> 3 <intent-filter> 4 <action android:name="MY_INTENT"></action> 5 </intent-filter> 6 </receiver>
知りたいことの詳細
認識としては、MainActivity
上でmBroadcastReceiver
をインポートしてメソッドを呼び出さないとmBroadcastReceiver
の処理が実行されない認識です。
その認識でソースを見ると、MainActivity
上でmBroadcastReceiver
をインポートしてメソッドを呼び出さずにmBroadcastReceiver
の処理を行っているように見えます。
どのようにmBroadcastReceiver
の処理を実行しているのでしょうか?
何卒ご教授下さい。
よろしくお願いいたします。
あなたの回答
tips
プレビュー