概述
BroadcastReceiver-广播接收器。它有两部份功能:1.发送广播消息,2.接受广播消息并处理。比如系统可以发出一种广播来测试是否接收到短信,这时候就可以定义一个BroadcastReceiver来接收广播。
实现广播发送和接收处理包含四个步骤:
- 注册广播
- sendBroadcast(Intent对象)
- 满足条件的广播接收器调用onReceive()方法
- 销毁广播接收器
注册文件
<receiver android:name=".MainReceiver"/>
布局
<EditText
android:id="@+id/edt_username"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_write"
android:text="send"
android:onClick="send"
android:textAllCaps="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/edt_username"
android:layout_alignParentStart="true" />
java代码
activity发送
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
/**
* Created by Sy on 2017/1/3 0003.
*/
public class MainActivity extends Activity {
private EditText ed_show;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed_show= (EditText) findViewById(R.id.edt_username);
}
public void send(View v){
Intent intent=new Intent(this,MainReceiver.class);
String message=ed_show.getText().toString();
intent.putExtra("msg",message);
sendBroadcast(intent);
}
}
BroadcastReceiver子类接收广播
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
/**
* Created by Sy on 2017/1/3 0003.
*/
public class MainReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String message=intent.getStringExtra("msg");
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
}
总结
值得注意的时,如果应用被销毁,广播也会随着销毁。