当前位置: 首页 > news >正文

Blog-05-《一周快速上手Kotlin For Android》-之Broadcast用法

---《一周快速上手Kotlin For Android》简介

目前Kotlin已正式成为Android的官方语言,作为Android开发者来说,学习和了解Kotlin也是属于理所当然的事情,兴许你觉得Java对于你来说才是真正的开发”利器”,使用Java你能发挥更高的效率,当然,如果如此你还是可以继续使用Java来开发Android。但对于Kotlin来说,开发Android会变得更简单一些,因为Kotlin其实就是Android开发中的语法糖,采用更简短的代码,描述更多的逻辑而已。开发语言本身就没有对错和最优,每个开发语言被开发出来的时代背景不同,需要解决的主要问题也不同。选择适合你自己的就可以。

BroadcastReceiver工作过程


Java 发送广播:

public class MainActivity extends AppCompatActivity {

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

        Button btn_send = findViewById(R.id.btn_send);
        btn_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction("ACTION_TEST");
                intent.putExtra("VALUE", 123);
                sendBroadcast(intent);
            }
        });
    }

}
复制代码

Kotlin 发送广播:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val btn_send = findViewById<Button>(R.id.btn_send)
        btn_send.setOnClickListener {
            val intent = Intent()
            intent.action = "ACTION_TEST"
            intent.putExtra("VALUE", 123)
            sendBroadcast(intent)
        }
    }

}
复制代码

Java接收广播:

public class Main2Activity extends AppCompatActivity {

    private static final String TAG = "Main2Activity";

    private MyReceiver myReceiver;
    private IntentFilter intentFilter;

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

        Log.d(TAG, "onCreate");
        myReceiver = new MyReceiver();
        intentFilter = new IntentFilter();
        intentFilter.addAction("ACTION_TEST");

        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
    }


    @Override
    protected void onResume() {
        super.onResume();
        registerReceiver(myReceiver, intentFilter);
    }

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

    private class MyReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            if(intent.getAction().equals("ACTION_TEST")){
                int value = intent.getIntExtra("VALUE", 0);
                Log.i(TAG, "onReceive value: " + value);
            }
        }

    }


}
复制代码

Kotlin接收广播:

class Main2Activity : AppCompatActivity() {

    private var myReceiver: MyReceiver? = null
    private var intentFilter: IntentFilter? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)

        Log.d(TAG, "onCreate")
        myReceiver = MyReceiver()
        intentFilter = IntentFilter()
        intentFilter!!.addAction("ACTION_TEST”)

        val intent = Intent(this, MainActivity::class.java)
        startActivity(intent)
    }


    override fun onResume() {
        super.onResume()
        registerReceiver(myReceiver, intentFilter)
    }

    override fun onDestroy() {
        super.onDestroy()
        unregisterReceiver(myReceiver)
    }

    private inner class MyReceiver : BroadcastReceiver() {

        override fun onReceive(context: Context, intent: Intent) {
            if (intent.action == "ACTION_TEST") {
                val value = intent.getIntExtra("VALUE", 0)
                Log.i(TAG, "onReceive value: " + value)
            }
        }

    }

    companion object {

        private val TAG = "Main2Activity"
    }


}


复制代码
欢迎关注我的公众号,分享更多的原创文章,关于技术、关于感悟。 


转载于:https://juejin.im/post/5b27ccc66fb9a00e9c47d061

相关文章:

  • pandas 打开没有列名的表格,并命名
  • KVOController代码分析和踩坑
  • Shell命令 中|| 使用
  • 针对ASP.NET Core Web API的先进架构
  • plsql 表中字段及注释时为乱码
  • BAT脚本编写教程入门提高篇
  • 时间序列异常检测算法S-H-ESD
  • docker实战
  • Hive 部署
  • Openstack 之 Prometheus 监控
  • python3 异步模块asyncio
  • 紫书 习题 11-10 UVa 12264 (二分答案+最大流)
  • 大数据经典学习路线(及供参考)
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • MySQL数据库运维之数据恢复
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • AngularJS指令开发(1)——参数详解
  • Cumulo 的 ClojureScript 模块已经成型
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JAVA之继承和多态
  • JS 面试题总结
  • tensorflow学习笔记3——MNIST应用篇
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 少走弯路,给Java 1~5 年程序员的建议
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 我是如何设计 Upload 上传组件的
  • 我有几个粽子,和一个故事
  • 小李飞刀:SQL题目刷起来!
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​TypeScript都不会用,也敢说会前端?
  • ​低代码平台的核心价值与优势
  • #Linux(权限管理)
  • (4) PIVOT 和 UPIVOT 的使用
  • (42)STM32——LCD显示屏实验笔记
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (ZT)出版业改革:该死的死,该生的生
  • (论文阅读11/100)Fast R-CNN
  • (七)理解angular中的module和injector,即依赖注入
  • (算法)Game
  • (转载)Linux 多线程条件变量同步
  • .java 9 找不到符号_java找不到符号
  • .net 发送邮件
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .net开发引用程序集提示没有强名称的解决办法
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • [ 转载 ] SharePoint 资料
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [Angular 基础] - 指令(directives)
  • [Erlang 0129] Erlang 杂记 VI 2014年10月28日
  • [Gradle] 在 Eclipse 下利用 gradle 构建系统