Kotlin四大组件中的broadcast广播

 更新时间:2022年12月05日 17:00:25   作者:go2coding  
Android开发的四大组件分别是:活动(activity),用于表现功能;服务(service),后台运行服务,不提供界面呈现;广播接受者(Broadcast Receive),勇于接收广播;内容提供者(Content Provider),支持多个应用中存储和读取数据,相当于数据库,本篇着重介绍广播组件

在上一章中,有个问题可能大家都没有注意,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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android开发常见错误小结

    Android开发常见错误小结

    这篇文章主要介绍了Android开发常见错误,实例分析了常见的Android开发中遇到的错误,对Android开发有一定参考借鉴价值,需要的朋友可以参考下
    2015-05-05
  • Android实现引导页的圆点指示器

    Android实现引导页的圆点指示器

    这篇文章主要为大家详细介绍了Android实现引导页的圆点指示器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Android实现图片转高斯模糊以及高斯模糊布局

    Android实现图片转高斯模糊以及高斯模糊布局

    这篇文章主要为大家详细介绍了Android实现图片转高斯模糊的方法,以及高斯模糊布局,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Android中使用sax解析xml文件的方法

    Android中使用sax解析xml文件的方法

    本篇文章介绍了,在Android中使用sax解析xml文件的方法。需要的朋友参考下
    2013-04-04
  • Android PopupWindow 点击外面取消实现代码

    Android PopupWindow 点击外面取消实现代码

    这篇文章主要介绍了Android PopupWindow 点击外面取消实现代码,本文直接给出核心实现代码,代码中包含注释,需要的朋友可以参考下
    2015-04-04
  • Android实现简单画中画功能

    Android实现简单画中画功能

    这篇文章主要为大家详细介绍了Android实现简单画中画功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 谈一谈Android内存泄漏问题

    谈一谈Android内存泄漏问题

    谈一谈Android内存泄漏问题,围绕内存泄露的定义、内存泄露的原理、内存泄露的解决方法进行探讨,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android集成GreenDao数据库的操作步骤

    Android集成GreenDao数据库的操作步骤

    这篇文章主要介绍了Android集成GreenDao数据库,使用数据库存储时候,一般都会使用一些第三方ORM框架,比如GreenDao,本文分几步给大家介绍Android集成GreenDao数据库的方法,需要的朋友可以参考下
    2022-10-10
  • Android开发中方向传感器定义与用法详解【附指南针实现方法】

    Android开发中方向传感器定义与用法详解【附指南针实现方法】

    这篇文章主要介绍了Android开发中方向传感器定义与用法,结合实例形式分析了Android方向传感器的功能、定义与使用方法,并附带基于方向传感器实现指南针功能的方法,需要的朋友可以参考下
    2017-11-11
  • Android列表组件ListView使用详解之动态加载或修改列表数据

    Android列表组件ListView使用详解之动态加载或修改列表数据

    今天小编就为大家分享一篇关于Android列表组件ListView使用详解之动态加载或修改列表数据,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论