关于Android的静态注册和动态注册以及跨平台的静态和动态注册的理解

Android的静态注册和动态注册以及跨平台的静态和动态注册的理解

何为Android广播:
Android广播就是一个全局大喇叭,就是告知,就像时校园的大喇叭,告诉学生该休息啦,该上课啦,该放学啦······就是一种告知的作用,这样的工作机制的在计算机领域有着广泛的应用。

如何写一个Android的静态注册呢?
首先第一步:
写广播的发送,简单的发送就是一个按钮,点击按钮实现发送,在主界面中写入一个简单按钮。
在这里插入图片描述
第二步:
在MainActivity中对按钮进行获取,然后写入点击事件代码,以及写下发送广播代码
在这里插入图片描述
第三步:
发送广播,自己进行接收,需要一个广播器来接收广播
广播器↓↓↓
在这里插入图片描述
第四步:
进行选台,在AndroidManifest.xml中选择CCTV_1台。
在这里插入图片描述
第五步:
当然就是写接收广播代码啦,在新建的广播器中写入接收代码。
在这里插入图片描述
最后进行运行就完成Android简单的静态注册了
需要注意的是,安卓8.0之后的静态注册的广播是无法接收的,需要添加Intent.setComponent();,在安卓9.0之后对静态注册需要在发送端去指定app所在的包名。

又如何写一个动态注册呢?
首先一定要知道静态注册时需要在xml中进行注册的,而动态的是只需要在Java代码中进行注册的。
首先第一步:
如静态注册一样,你需要一个按钮来进行点击。
—在activity_main.xml中添加一个button控件,用来发送广播的点击事件。
第二步:
在MainActivity.java中获取button并写入点击监听事件。
在这里插入图片描述
第三步:
创建BroadcastReceiver
在这里插入图片描述
这样,动态注册完成啦。
总结:
静态注册:Activity销毁了,广播仍然能收到
动态注册:当Activity销毁,广播也会失效。(因为受到生命周期的影响)
如何跨平台静态注册和动态注册?
静态注册(跨平台)
这里是需要创建两个工程的,一个进行发送,一个进行接收。
发送一方:
第一步:
在发送一方中的activity_main.xml 中添加一个button。
第二步:
在发送方的MainActivity.java 中声明并且写入点击监听事件
在这里插入图片描述
接收一方:
第一步:
在activity_main.xml 中添加一个TextView,用来接收发送方传来的值,id为tv。
第二步:
创建BroadcastReceiver。
在这里插入图片描述
第三步:
在MainActivity.java 中实现广播类中的内部接口并实现其方法
在这里插入图片描述
第四步:
由于是接收方,我们需要在AndroidManifest.xml注册广播。
在这里插入图片描述
以上就是跨平台静态注册。
动态注册(跨平台)
同样是需要建立两个工程。
发送一方:
第一步:
在activity_main.xml 中添加一个button。代码如下:

<Button
    android:id="@+id/btn1"
    android:text="发送"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

第二步:
在MainActivity.java 中动态注册广播并发送,代码如下:

public class MainActivity extends AppCompatActivity implements public class MainActivity extends AppCompatActivity {
private MyReceiver broad = new MyReceiver();
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter filter = new IntentFilter(“HAO_PENG1”);
registerReceiver(broad, filter);
findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(“HAO_PENG1”);
intent.putExtra(“key”,“动态传输数据”);
sendBroadcast(intent);
}
});
}

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

}
接收一方:
第一步:
在activity_main.xml 中添加一个TextView,代码如下:

<TextView
    android:id="@+id/tv1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:textSize="25sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

第二步:
创建BroadcastReceiver,代码如下:

public class MyReceiver extends BroadcastReceiver {
private DaiLi daiLi;

@Override
public void onReceive(Context context, Intent intent) {
    daiLi.xieRu(intent.getStringExtra("key"));

}

public void chuanDi(DaiLi d) {
    daiLi = d;
}

public interface DaiLi {
    void xieRu(String s);
}

}
第三步:
在MainActivity.java 中实现广播类中的内部接口并实现其方法,代码如下:

public class MainActivity extends AppCompatActivity implements MyReceier.DaiLi{
private MyReceier myReceier = new MyReceier();
private TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter filter = new IntentFilter(“HAO_PENG1”);
registerReceiver(myReceier, filter);
myReceier.chuanDi(this);
tv1 = findViewById(R.id.tv1);
}

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

@Override
public void get(String s) {
    tv1.setText(s);
}

}

如上就是我对于Android的静态注册和动态注册以及跨平台的静态和动态注册的理解。
授课老师金庭波老师的悉心教导。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值