几种监听事件和广播介绍。先说说几种监听事件。

几种监听事件

在xml文件中设置
第1步:xml文件中设置onClick

1
2
3
4
5
6
7
<Button
android:id="@+id/send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/et_text"
android:text="@string/send"
android:onClick="send"/>

第二步:activity中写监听方法

1
2
3
public void send(View v) {
//业务代码块
}

匿名内部类

1
2
3
4
第一种方法:
bt_send.setOnClickListener((new View.OnClickListener(){
public void onClick(View v){
}}));

内部类

1
2
3
4
5
bt_send.setOnClickListener(new MyOnclickListener()){

private class MyOnClickListener implements OnClickListener{
public void onClick(View v){
}}

广播(BroadCast)

Android 系统会发送许多系统级别的广播,例如:屏幕关闭、电池电量低等广播。

Android 分为两个方面:广播发送者和接受者。

BroadcastReceiver 指的就是广播接受者(广播接收器)

第一种实现方式:

  1. 在 Activity.xml 布局一个按钮,点击事件(只是举例);
  2. 在 MainActivity 中发送广播;
  3. 在 Androidmanifest.xml 配置;
  4. 新建 java 类,继承 BroadcastReceiver,写一个收到广播的调用方法。
1
2
3
4
5
6
7
8
  public void send(View v){

//发送广播
Intent intent =new Intent();
intent.setAction("guangbo"); //动作,这里以什么动作发送广播,后续就以什么方式接收广播
intent.putExtra("name","张三"); //传参数
sendBroadcast(intent);
}
1
2
3
4
5
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="guangbo"></action>
</intent-filter>
</receiver>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MyBroadcastReceiver extends BroadcastReceiver {

private static final String TAG = "MyBroadcastReceiver" ; //只是打个日志,在logcat里看见例子

//当广播接收者收到广播,该方法被调用
@Override
public void onReceive(Context context, Intent intent) {

if(intent.getAction().equals("guangbo")){ //上面说的接收方式一致即可
String name = intent.getStringExtra("name");
Log.i(TAG,"name:" +name); //打个logcat看看
}

}
}

第二种实现方式:

  1. 在 Activity.xml 布局一个按钮,点击事件(只是举例)(同上);
  2. 在 MainActivity 中发送广播,订阅广播,取消广播;
  3. 新建 java 类,继承 BroadcastReceiver,写一个收到广播的调用方法  (同上)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class MainActivity extends AppCompatActivity {


private BroadcastReceiver receiver;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//广播的订阅
receiver = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("guangbo"); //设置动作
registerReceiver(receiver,filter);
}
public void send(View v){

//发送广播
Intent intent =new Intent();
intent.setAction("guangbo"); //动作
intent.putExtra("name","张三"); //传参数
sendBroadcast(intent);
}

@Override
protected void onDestroy() { //当程序崩溃时,不需要发送广播
super.onDestroy();

//取消广播订阅
unregisterReceiver(receiver);
}
}