android四大组件-----广播

https://developer.android.com/guide/components/broadcasts

一  广播接收者

Broadcast Receiver

二 广播类型

1 普通广播 通过 Context.sendBroadcast (intent)

2有序广播 通过 Context.sendOrderedBroadcase(intent,receiverPermission)

2.1截断广播  abortBroadcast

3 异步广播 context.sendStickyBroadcast(intent)

sendStickyOrderedBroadcase

三 监听广播

1 写一个类继承 Broadcast Receiver

2 重写 onReceive

3 SMSBroadReceivrer 注册广播接收者

1 静态注册

<receiver>

</receiver>

2 动态注册

IntentFilter intentFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED")

registerReceiver(mBatteryInfoReceiver.intentFilter)

取消注册

unregisterReceier(receiver)

广播生命周期只有10秒

注册广播

  <receiver android:name=".MyBroad">
          <intent-filter>
              <action android:name="com.yifei.myapplication.MyBroad"

                  />
          </intent-filter>
        </receiver>

发送广播

      btn = findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction("com.yifei.myapplication.MyBroad");
               sendBroadcast(intent);
            }
        });

接收广播

//创建广播接收者
public class MyBroad extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(MainActivity.TAG, "onReceive: ");
    }
}

动态注册 以及销毁广播

package com.yifei.myapplication;

import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    public static  String TAG ="MainActivity12";
    private Button btn,btn1;
    private MyService myService;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        btn1 = findViewById(R.id.btn1);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //发送广播
                Intent intent =new Intent(MyService.receiver);
                sendBroadcast(intent);
            }
        });
        //动态注册广播 接收者
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(MyService.receiver);
        myService = new MyService();
        registerReceiver(myService, intentFilter);

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(myService);
    }
}

广播 

public class MyService extends BroadcastReceiver {
    public static final String receiver ="com.yifei.myapplication.MyService";
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(MainActivity.TAG, "onReceive: MyService");
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_41069726/article/details/89785367