很早以前就听闻<JavaScriptCore/JavaScriptCore.h>
的大名了,只是没有正面接触过,有的也只是间接接触过,比如ReactNative
,它渲染界面的核心就是<JavaScriptCore/JavaScriptCore.h>
。但是今天就不得不和它有一次正面的接触了,公司要做一个功能,需要Native
和js
方法之间的互调,所以,本篇文章就说说如何实现。当然,本篇文章说的都是基础。
本篇文章主要说一下如何利用ReactNative
的jsbundle
机制来实现App
的热更新。
前段时间iOS
界发生了一件大事,苹果禁止含有热更新或者热修复的APP
上架,这里主要是禁止使用runtime
的一些特性。但是ReactNative
不同,它没有使用到runtime
特性,并且好多人已经证实,ReactNative
应用依然可以上线。
其实好多应用并不是使用ReactNative
直接开发,而是在原生应用的基础上,导入ReactNative
。iOS
最好使用cocoapods
导入,Android
使用build.gradle
添加依赖包。本篇文章主要包含三个部分:环境搭建、iOS
热更新和Android
热更新。
前段时间我有说过Handler
、Message
、Looper
三者之间的关系,它们可以解决线程间通信,可以用作子线程处理耗时操作,主线程刷新UI等。今天我要说的是另外一种解决方案:AsyncTask
。它的内部还是使用异步消息处理机制,只是Android
对这三者进行了高度的封装。如果你对异步消息处理机制还不是很清楚的话,你可以看看这篇文章:一天一Android之异步消息处理机制。来看看AsyncTask
到底如何使用。
写在此文章之前
最近一直在研究Android
,我开始学习Android
是有原因的,前段时间写过一个类似于一元夺宝的跨平台APP,里面的好多功能是ReactNative
没有提供的,好在现在ReactNative
开源社区里面已经有好多优秀的开源库了,就直接拿来用了,但是,这并不能满足开发中一些特殊的需求,这个时候就要写js和原生之间的桥接了,因为我的老本就是iOS
,所以写iOS
的桥接很容易。但是写Adnroid
就有点费力了,因为我对Android
一窍不通。但是想学好ReactNative
,只会iOS
是不行的,所以我就开始了我的Android
之旅。还有,假如ReactNative
在以后死掉了,我也新郑了Android
开发这一新技能,一本万利。
Android
的博客也写了几篇了,我要回过头来说一些ReactNative
的东西,所以,如果你看到我今天在说Android
,明天又说ReactNative
,你不要奇怪,这很正常。
那今天就先来说说关于js和原生的桥接。
阅读全文今天愚人节,先祝大家愚人节快乐!
今天来说一下Android开发中经常使用到的一个类:Fragment
。由于Android
屏幕的碎片化,Android
为我们提供了一个和方便的类来使我们的APP可以适应各种屏幕的手机和平板,当然,Fragment
的功能远不止是为适应屏幕而生。你可以把Fragment
当成Activity
的一个界面的一个组成部分,甚至Activity
的界面可以由完全不同的Fragment
组成,更神奇的是Fragment
拥有自己的生命周期和接收、处理用户的事件,这样就不必再Activity
写一堆控件的事件处理的代码了,更重要的是,你可以动态的添加、替换和移除某个Fragment
。
无论是Android
还是iOS
,关于UI的操作都是线程不安全的,所有的UI操作只能在主线程中执行。有时候我们会在子线程中做一些耗时的操作,比如网络资源的请求,当这些耗时操作结束时,我们又希望拿这些请求下来的资源去更新UI,但是当前线程为子线程,而更新UI由必须在主线程中,这就涉及到了线程间的通信问题。
学过iOS的同学都知道,我们可以使用GCD
或者performSelectorOnMainThread:
等技术来达到我们的需求。而在Android中,我们就要使用到异步消息处理机制了。
这篇文章就来详细说一下异步消息处理机制。
阅读全文任何一个应用程序,说白了都是在不停的和数据打交道,通过网络获取的数据,一般为瞬时数据,当我们关闭APP的时候,这些数据就会消失。但有时候我们却希望在APP关闭的时候,保存这些数据,以期待在下次APP启动的时候能用到这些数据。那么,这里我们就需要用到数据持久化技术了。
其实数据持久化已经被广泛应用于各种程序设计的领域了,后台就不说了,iOS有plist
、归档
、数据库
等。当然,Android也有类似与iOS的存储方式:文件存储
、SharedPreference
以及数据库
等,对了,Android还有SD卡。
提到广播,因为我是农村的,首先想到的就是我们村大队的喇叭,如果平常有交电费,或者重要的事情,这个喇叭就会响起,全村的都能听见,可能有时候邻村的也能听见,足见广播的推送面积之大。
提到广播这种机制,学过iOS的都知道通知,我想这两种机制应该都是类似的。在iOS中,我们如果想监听系统的某些事件,比如APP退到后台,我们只需要在把监听对象添加到系统的通知中心中,并且关注APP退到后台的事件,就可以随时监听了。通知还有个好处就是,我们可以夸线程,夸界面的处理事件。
那么,在Android中,广播又是怎么回事呢,这篇文章就来详细分析一下广播在Android中的应用。(ps:广播还有另外一个名字——全局大喇叭~~)
阅读全文ListView由于其强大的功能,已经能满足我们绝大功能的开发,但是,当我们的数据比较复杂,条目也比较复杂的时候,如果我们优化的不好,那么ListView的性能就会非常差。还有,ListView只能实现数据纵向滚动的效果,如果我们想实现横向滚动的话,ListView做不到。
为此,Android提供了一个更强大的滚动控件——RecyclerView。它可以说是一个增强版的ListView,不仅可以轻松实现和ListView同样的效果,还优化了ListView中存在的各种不足之处,目前Android官方更加推荐我们使用RecyclerView。
阅读全文说起ListView
,就不得不说iOS的UITableView
,毫不夸张的说的,放在3年前,如果你去面试的时候,你说你会用UITableView
,知道UITableView
的代理方法,不用说了,你可以直接来上班了。
ListView
在Android中开发的重要性不言而喻,学好ListView
,我想在以后的列表开发中就不用发愁了。什么是列表开发?这么说吧,在你使用的APP中,80%的都会用到列表开发,比如微信的聊天页,QQ的个人空间页。为何要用列表开发,列表开发的优越在哪里?我今天来一探究竟。