Kotlin四大组件中的broadcast广播

目录
  • 创建Fragmen 碎片
  • 主界面中添加ViewPager
  • 创建广播
  • 小结

在上一章中,有个问题可能大家都没有注意,Acitivity 在使用startActivityForResult后,可以给另一个的Acitivity 或者Fragment 进行数据参数的传递,可以回去也可以回来。但如果中间要进行数据的交换,使用startActivityForResult 是不能够做到的。

最常见的一种情况是Acitivity 中启动 碎片Fragmen 的时候,可以通过参数的方式进行传递,但碎片Fragmen要传回来数据,就没那么容易了。

Android 中,可以使用 Android 中四大组件之一的Broadcast,我们叫他广播。这一节的例子就是展示怎么在碎片FragmenAcitivity 中的通讯问题,我们会建立一个AcitivityFragmen ,在Fragmen 中发送广播,Acitivity中接受,这样就可以达到双向交流的目的。

创建Fragmen 碎片

建立起Fragmen 碎片,在Fragmen 中发送广播给Acitivity ,让Acitivity 处理相应的广播命令。

        fun newInstance(position:Int,image_id:Int,desc:String):BroadcastFragment {
            val bundle = Bundle()
            bundle.putInt("position",position)
            bundle.putInt("image_id",image_id)
            bundle.putString("desc",desc)
            val fragment = BroadcastFragment()
            fragment.arguments = bundle
            return fragment
        }

在建立Fragmen 的时候,Acitivity通过参数的形式,把数据传递给Fragmen ,这里就有了一次数据参数的传递过程。

主界面中添加ViewPager

我们建立ViewPager 的目的,是这ViewPager 中添加 Fragmen,来模拟 FragmenAcitivity 之间的通信问题。

    <androidx.viewpager.widget.ViewPager
        android:id = "@+id/vp_content"
        android:layout_width="match_parent"
        android:layout_height="550dp">
        <androidx.viewpager.widget.PagerTabStrip
            android:id = "@+id/pts_tab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </androidx.viewpager.widget.ViewPager>

建立起适配器,来加载Fragmen 碎片。

class BroadcastPagerAdapter(fm:FragmentManager,private val goodsList: MutableList<GoodsInfo>):FragmentStatePagerAdapter(fm) {
    override fun getCount(): Int {
        return goodsList.size
    }
    override fun getItem(position: Int): Fragment {
        return BroadcastFragment.newInstance(position,goodsList[position].pic,goodsList[position].desc)
    }
    override fun getPageTitle(position: Int): CharSequence? {
        return goodsList[position].name
    }
}

在主界面中,加载适配器。

        pts_tab.setTextSize(TypedValue.COMPLEX_UNIT_SP,20f)
        vp_content.adapter = BroadcastPagerAdapter(supportFragmentManager,GoodsInfo.defaultList)
        vp_content.currentItem = 0

到这里,界面该有的控件就建立起来。

创建广播

发送广播和传递数据都是用Intent,先建立起BroadcastReceiver

    private var bgChangeReceiver:BgChangeReceiver? = null
    private inner class BgChangeReceiver:BroadcastReceiver(){
        override fun onReceive(p0: Context?, p1: Intent?) {
        }
    }

注册广播,

    override fun onStart() {
        super.onStart()
        bgChangeReceiver = BgChangeReceiver()
        val filter = IntentFilter(BroadcastFragment.EVENT)
        activity?.registerReceiver(bgChangeReceiver,filter)
    }
    override fun onStop() {
        activity?.unregisterReceiver(bgChangeReceiver)
        super.onStop()
    }

新建一个按钮,来发送广播,

        btn_cast.setOnClickListener {
            val intent = Intent(BroadcastFragment.EVENT)
            intent.putExtra("color",1)
            activity?.sendBroadcast(intent)
        }

小结

Android中四大 组件之一的 Broadcast 这里也简单接受了下,如果之前有接触过windows编程的话,你会接触过sendmessage的函数,其实他就是一种广播,跟Android一样没有什么两样,都是为了组件和组件,界面和界面直接的沟通。

到此这篇关于Kotlin四大组件中的broadcast广播的文章就介绍到这了,更多相关Kotlin broadcast内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android广播实现App开机自启动

    本文实例为大家分享了Android广播实现App开机自启动的具体代码,供大家参考,具体内容如下 一.概括 在安卓中,想要实现app开机自动启动,需要实现拦截广播android.permission.RECEIVE_BOOT_COMPLETED,并且需要使用静态注册广播的方法(即在AndroidManifest.xml文件中定义广播): 二.步骤 1. 先在AndroidManifest.xml文件中定义广播和声明权限: <uses-permission android:name="andr

  • Android四大组件之broadcast广播使用讲解

    目录 一.广播机制概述 二.广播接收者 1.广播接收者的创建 2.广播接收者的注册 三.广播的类型 1.无序广播 2.有序广播 一.广播机制概述 通常情况下在学校的每个教室都会装有一个喇叭,这些喇叭是接入到学校广播室的.如果有重要通知,会发送一条广播来告知全校师生.为了便于发送和接收系统级别的消息通知,Android系统也引入了一套类似广播的消息机制. Android中的广播(Broadcast)机制用于进程/线程间通信,该机制使用了观察者模式,观察者模式是一种软件设计模式,该模式是基于消息的发

  • Broadcast广播机制在Pytorch Tensor Numpy中的使用详解

    目录 1.什么是广播机制 2.广播机制的规则 3.代码举例 4.原地操作 1.什么是广播机制 根据线性代数的运算规则我们知道,矩阵运算往往都是在两个矩阵维度相同或者相匹配时才能运算.比如加减法需要两个矩阵的维度相同,乘法需要前一个矩阵的列数与后一个矩阵的行数相等.那么在 numpy.tensor 里也是同样的道理,但是在机器学习的某些算法中会出现两个维度不相同也不匹配的矩阵进行运算,那么这时候就需要用广播机制来解决,通过广播机制,其tensor参数可以自动扩展为相等大小(不需要复制数据).下面我

  • Android四大组件之broadcast广播详解

    目录 基础广播 两大类广播 广播的动态和静态注册 监听时间变化 监听系统启动案例 创建 receiver 设置权限 发送自定义广播 如何发送与接收 有序广播 基础广播 两大类广播 标准广播:异步执行,广播发出后所有 receiver 同时接收,无先后顺序,无法被截断: 有序广播:同步执行,类似于中间件,每个 receiver 拦截广播后有权将其下放到下一个 receiver 或者直接截断: 广播的动态和静态注册 动态注册:写在代码里面的监听事件: 静态注册:写在 manifest.xml 里面的

  • Android广播事件流程与广播ANR原理深入刨析

    目录 序言 一.基本流程和概念 二.无序广播流程 注册广播接收者流程 广播通知流程 三.有序广播流程 四.广播ANR流程 五.总结 六.扩展问题 序言 本想写广播流程中ANR是如何触发的,但是如果想讲清楚ANR的流程,就不得不提整个广播事件的流程,所以就把两块内容合并在一起讲了. 本文会讲内容如下: 1.动态注册广播的整个分发流程,从广播发出,一直到广播注册者接收. 2.广播类型ANR的判断流程和原理. PS:本文基于android13的源码进行讲解. 一.基本流程和概念 动态广播的流程其实是很

  • android studio广播机制使用详解

    Intent 是一种消息传播机制,用于组件之间数据交换和发送广播消息.通过本次实验了解 Android 系统的组件通信原理,掌握利用 Intent 启动其他组件的方法,以及利用 Intent 获取信息和发送广播消息的方法. 1.实现具有“登录”按钮的主界面,输入用户名.密码,点击登录按钮后,经过判断进入一个广播Activity(需要传递主界面的用户名) 2.在广播Activity中,输入信息,点击发送广播按钮发送广播,并且在广播接收器中接收广播并显示. activity.xml <?xml ve

  • Android 广播接收器BroadcastReceiver详解

    目录 一.什么是BroadcastReceiver 1.1.作用 1.2.实现原理 二.创建广播接收器 三.注册广播接收器 3.1.静态注册 注册 发送通知 3.2.动态注册 四.系统广播 总结 一.什么是BroadcastReceiver BroadcastReceiver 是安卓系统中四大组件之一,在Android开发中,BroadcastReceiver的应用场景非常多,Android 广播分为两个角色:广播发送者.广播接收者. 1.1.作用 广播接收器用于响应来自其他应用程序或者系统的广

  • Android四大组件之BroadcastReceiver详解

    BroadcastReceiver(广播接收器),在Android开发中,BroadcastReceiver的应用场景非常多,属于Android四大组件之一. Android 广播分为两个角色:广播发送者.广播接收者 一. 作用 用于监听 / 接收 应用发出的广播消息,并做出响应 应用场景: 不同组件之间通信(包括应用内 / 不同应用之间) 与 Android 系统在特定情况下的通信(如当电话呼入时.网络可用时) 多线程通信 二.实现原理 Android中的广播使用了设计模式中的观察者模式:基于

  • Android应用程序四大组件之使用AIDL如何实现跨进程调用Service

    一.问题描述 Android应用程序的四大组件中Activity.BroadcastReceiver.ContentProvider.Service都可以进行跨进程.在上一篇我们通过ContentProvider实现了不同应用之间的跨进程调用,但ContentProvider主要是提供数据的共享(如sqlite数据库),那么我们希望跨进程调用服务(Service)呢?Android系统采用了远程过程调用(RPC)方式来实现.与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言

  • Android编程四大组件之BroadcastReceiver(广播接收者)用法实例

    本文实例讲述了Android编程四大组件之BroadcastReceiver(广播接收者)用法.分享给大家供大家参考,具体如下: 这里介绍如何创建广播.如何发送一个无序广播和有序广播.以及监听短信以及监听呼出电话(当我们发短信和打电话,系统就会发一个广播,我们可以拦截此广播进行监听短信以及监听呼出电话). 定义广播接收者 1.定义类继承BroadcastReceiver,重写onReceive方法 2.当接收到匹配广播之后就会执行onReceive方法 3.清单文件中声明<receiver>,

  • Android四大组件之广播BroadcastReceiver详解

    定义 BroadcastReceiver,"广播接收者"的意思,顾名思义,它就是用来接收来自系统和应用中的广播.在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能:当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作:当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户及时保存进度等等.Android中的广播机制设计的非常出色,很多事情原本需要开发者亲自操作的,现

  • Angularjs中的事件广播 —全面解析$broadcast,$emit,$on

    Angularjs中不同作用域之间可以通过组合使用$broadcast,$emit,$on的事件广播机制来进行通信 介绍: $broadcast的作用是将事件从父级作用域传播至子级作用域,包括自己.格式如下:$broadcast(eventName,args) $emit的作用是将事件从子级作用域传播至父级作用域,包括自己,直至根作用域.格式如下:$emit(eventName,args) $on用于在作用域中监控从子级或父级作用域中传播的事件以及相应的数据.格式如下:$on(event,dat

  • Android编程四大组件分别是什么

    Android开发四大组件分别是:活动(Activity):用于表现功能.服务(Service):后台运行服务,不提供界面呈现.广播接收器(BroadcastReceiver):用于接收广播.内容提供商(ContentProvider):支持在多个应用中存储和读取数据,相当于数据库. 1.Activity Android 中,Activity 是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity可以算是开发者遇到的最频繁,也是Android 当中最基本的模块之一.在A

  • Android四大组件之Service服务详细讲解

    目录 一.Service是什么 二.Service 的启动方式 2.1.startService 显示启动 Service启动 Service 停止 2.2.bindService 绑定启动 使用bindService()方法启动Service unbindService 停止服务 三.Service 生命周期 startService启动的生命周期 bindService启动的生命周期 上一节:Activity 简介:在Android组件中最基本也是最为常见的四大组件: Activity Se

  • Android四大组件之Activity深入解读生命周期

    目录 一.什么是Activity 二.Activity之间的跳转 三.Activity 生命周期 3.1.Activity生命周期的基本状态 3.2.Activity 生命周期的7个方法 3.3.Activity 生命周期的三个循环 简介:在Android组件中最基本也是最为常见的四大组件: Activity Service服务 Content Provider内容提供者 BroadcastReceiver广播接收器 一.什么是Activity Activity是一个应用程序组件,提供一个屏幕,

  • Android编程四大组件之Activity用法实例分析

    本文实例讲述了Android编程四大组件之Activity用法.分享给大家供大家参考,具体如下: 这里详细介绍如何创建Activity.生命周期.内存管理.启动模式. 创建Activity 一.定义Activity 1. 定义Activity 定义类继承Activity 2.在AndroidManifest.xml的节点中声明<activity> 显式意图创建Activity三种方式方式 //第一种方式:构造函数,代码少 Intent intent1 =new Intent(this,NewA

随机推荐