无论是Android还是iOS,关于UI的操作都是线程不安全的,所有的UI操作只能在主线程中执行。有时候我们会在子线程中做一些耗时的操作,比如网络资源的请求,当这些耗时操作结束时,我们又希望拿这些请求下来的资源去更新UI,但是当前线程为子线程,而更新UI由必须在主线程中,这就涉及到了线程间的通信问题。

学过iOS的同学都知道,我们可以使用GCD或者performSelectorOnMainThread:等技术来达到我们的需求。而在Android中,我们就要使用到异步消息处理机制了。

这篇文章就来详细说一下异步消息处理机制。

阅读全文

任何一个应用程序,说白了都是在不停的和数据打交道,通过网络获取的数据,一般为瞬时数据,当我们关闭APP的时候,这些数据就会消失。但有时候我们却希望在APP关闭的时候,保存这些数据,以期待在下次APP启动的时候能用到这些数据。那么,这里我们就需要用到数据持久化技术了。

其实数据持久化已经被广泛应用于各种程序设计的领域了,后台就不说了,iOS有plist归档数据库等。当然,Android也有类似与iOS的存储方式:文件存储SharedPreference以及数据库等,对了,Android还有SD卡。

阅读全文

一天一Android之广播

发布在 Android

提到广播,因为我是农村的,首先想到的就是我们村大队的喇叭,如果平常有交电费,或者重要的事情,这个喇叭就会响起,全村的都能听见,可能有时候邻村的也能听见,足见广播的推送面积之大。

提到广播这种机制,学过iOS的都知道通知,我想这两种机制应该都是类似的。在iOS中,我们如果想监听系统的某些事件,比如APP退到后台,我们只需要在把监听对象添加到系统的通知中心中,并且关注APP退到后台的事件,就可以随时监听了。通知还有个好处就是,我们可以夸线程,夸界面的处理事件。

那么,在Android中,广播又是怎么回事呢,这篇文章就来详细分析一下广播在Android中的应用。(ps:广播还有另外一个名字——全局大喇叭~~)

阅读全文

ListView由于其强大的功能,已经能满足我们绝大功能的开发,但是,当我们的数据比较复杂,条目也比较复杂的时候,如果我们优化的不好,那么ListView的性能就会非常差。还有,ListView只能实现数据纵向滚动的效果,如果我们想实现横向滚动的话,ListView做不到。

为此,Android提供了一个更强大的滚动控件——RecyclerView。它可以说是一个增强版的ListView,不仅可以轻松实现和ListView同样的效果,还优化了ListView中存在的各种不足之处,目前Android官方更加推荐我们使用RecyclerView。

阅读全文

一天一Android之ListView

发布在 Android

说起ListView,就不得不说iOS的UITableView,毫不夸张的说的,放在3年前,如果你去面试的时候,你说你会用UITableView,知道UITableView的代理方法,不用说了,你可以直接来上班了。

ListView在Android中开发的重要性不言而喻,学好ListView,我想在以后的列表开发中就不用发愁了。什么是列表开发?这么说吧,在你使用的APP中,80%的都会用到列表开发,比如微信的聊天页,QQ的个人空间页。为何要用列表开发,列表开发的优越在哪里?我今天来一探究竟。

阅读全文

一天一Android之布局

发布在 Android

今天主要说说布局。我在看Android的任何内容的时候,心中总要和iOS进行一番比较,就说布局吧,在iOS中,我们一般直接使用frame计算、AutoLayout约束布局。在Android的世界中,一般使用xml布局文件来进行布局,用到的布局方式有四种:线性布局、相对布局、帧布局、百分比布局。还有一种是直接使用图形化添加约束:ConstraintLayout。为何Android的布局方式如此的多,主要是因为Android屏幕的碎片化,不像苹果就那几款手机。

阅读全文

一天一Android之Activity

发布在 Android

今天来说一说Android四大组件之一的Activity,类似于iOS的UIViewController。当我们新建一个Android项目时,Android Studio默认会为我们创建一个主活动:MainActivity和一个默认的主布局:activity_main.xml。一个活动想要显示在屏幕上,就必须在AndroidManifest.xml中注册。但是这些工作都有IDE帮我们自动完成了。我们来看AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.guiyongdong.activitydemo">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--MainActivity-->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
阅读全文

由于前段时间使用ReactNative开发过一个项目,在开发的过程中,会使用到大量的非ReactNative提供的组件和功能。这时候就必须写原生桥接,iOS还好说,毕竟是靠这个吃饭的,可是android就捉襟见肘了。为了向大前端的目标更进一步,我计划开始学习android,为期6个月,我的目标是6个月内起码自己公司的android项目可以上手,当然,如果想成为真正的android开发者,光靠这6个月是不行。还需要大量的实际项目才能锻炼。

值得庆幸的是我在大学主攻的就是java(哈哈,现在也基本上忘的差不多了)。为了打好基础,我买了两本书,一本是《java编程思想》,一本是京东上销量很好的《第二行代码Android》,希望这两本书能够帮到我。另外我也会专门开一个专栏,讲解我学习java的过程。可能在接下来的博客中,我总结的都是基础知识,大神莫嘲笑。

阅读全文

转场动画详解

发布在 Objective-C

iOS开发中,页面之间的跳转无外乎由UINavigationController管理的push或者pop操作、以及由UIViewController管理的presentdismiss操作,无论何种操作,iOS原生系统都为我们提供了页面之间的基础跳转动画。但是往往在开发中,由于各种功能需求,iOS原生系统提供的跳转动画并不能满足我们的需求,好在iOS早就给我们提供了一套自定义转场动画的解决方案,这篇文章就来详细了解一下转场动画。在了解这篇文章之前,先看看iOS提供的整个转场框架



阅读全文

网络是APP开发中非常重要的一部分,除非这个APP是本地自玩,否则就离不开网络。在iOS开发中,我们一般都会去使用别人造好的轮子,其中最有名也最常用的非AFNetworking莫属。这篇文章就深入探讨一下AFNetworking是如何工作的。

概述


我们先来看看AFNetworking整个架构体系:



首先,我们有两个问题需要了解:

  • 如何使用NSURLSession发出HTTP请求
  • 如何使用AFNetworking发出HTTP请求
阅读全文
Copyrights © 2019 贵永冬. All Rights Reserved.
作者的图片

贵永冬

iOS开发者
会一点RN和android, 十足的海贼迷


河南信悦通网络科技有限公司


河南 郑州