移动开发

Android Studio更改项目使用的JDK

一、吐槽过去,在安卓项目中配置JDK和Gradle的过程非常直观,只需要进入Android Studio的File菜单中的Project Structure即可进行设置,十分方便。原本可以在这修改JDK: 但大家都知道,Android Studio的狗屎性能,再加上它对用户的“摆烂”态度,真是让人心累。每次更新似

Dart简介4--异步支持

说明 在很多语法中,回调处理异步任务是很常见的操作,然而回调多了是一件很老火的事情。Dart给了我们很友好的方式,可以允许我们写出和同步代码很像的异步代码。 1,Future Future一个异步操作的最终完成(或失败)及其结果值的表示。简单来说,它就是用于处理异步操作的,异步处理成功了就执行成功的操作,异步处理失败了就捕获错误或者停止后续操作。一个Future只会对应一个结果,要么成功,要

RecyclerView卡顿案例和解决方案

记录一次RecyclerView卡顿案例和解决方案。 需求:界面由两部分组成,顶部一个图片,图片下面是列表。在列表滑动时,图片跟着滑动。 实现:NestedScrollView [ LinearLayout [ ImageView , RecyclerView ] ]。 结果:当数据量较大时,RecyclerView 会越划越卡。 原因:NestedScrollView 嵌套 RecyclerVi

Glide源码分析之加载图片URL

简介 Glide 作为Android开发过程中常见的图片加载工具,在我们日常开发中用到到越来越多.但是个人也只是停留在用的状态.最近时间充裕简单的梳理了一下Glide 加载网络图的流程 流程 1.1 Glide.with(content) 得到RequestManagerRetriever初始化了RequestManager和Glide. @NonNull public static Reque

iOS Foundation 中的线程锁

前言      锁是线程编程的基本同步工具。锁使您能够轻松地保护大部分代码,从而确保该代码的正确性。OS X 和 iOS 为所有应用程序类型提供了基本的互斥锁,Foundation 框架为特殊情况定义了一些额外的互斥锁变体。以下部分将展示如何使用其中几种锁。 NSLock (互斥锁) NSLock 的使用     NSLock 为 App 实现了一个基本的互斥锁。NSLock 的接口实际上是由 N

iOS 静态库 和 bundle

开源库 公开源代码,能看到具体实现,如SDWebImage,AFNetworking 闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现,主要分为静态库 和动态库 静态库和动态库的区别 1、 形式上 静态库是.a 和 .framework。 动态库是.dylib和 .framework ,xcode8 为.tbd ,本质是.dylib 2、使用上: 静态库,链接时,会被完整的复制到

Android从触碰屏幕开始的事件采集,解析及分发

1 原始事件信息 打开模拟器, 或者用usb把手机连接上电脑并打开手机上面的开发者模式, (这里为了截图方便用了模拟器)打开cmd, 输入adb shell getevent回车, 然后点击模拟器或者手机后, 就会看到有N多行的/dev/input/event......输出. 其实, 这些信息就是最原始的事件信息. 2 信息分析 cmd重新执行adb shell geteve

R shiny 云端部署App

看了几天Rshiny的逻辑和语法有点发腻,抽点时间研究了一下如何在云端部署自己的app。 然后本地服务器的话稍微复杂一点,才知道shiny不支持mac端的直接部署。哎,以后再花篇幅整理吧。当然AWS和阿里云也是可以实现的,操作方法虽然有点不一样。 shinyapps.io 注册账号以后进入自己的dashboard。然后查看自己的密钥,也就是Tokens 点击Copy to clipb

iOS ~ 登录注册页:背景设置为视频样式AVPlayer

视频播放:AVPlayerItem、AVPlayerLayer、AVPlayer 原理:在一个UIViewController上,先将视频的AVPlayer等等图层加载上,在最上层覆盖一些其他的控件(比如:输入框、按钮等等) 退出视频播放页面时,注意一定要进行 AVPlayer①停止并②释放操作: 1.清除KVO; 2.暂停; 3.清空缓存区; 4.从父视图移除播放器; 5.移除播放器的全部视

如何定位Linux应用程序崩溃?

背景 最近项目中用到了一个库,在程序崩溃时可以生成exception文件,记录程序崩溃时的调用信息,对于定位问题比较有价值,因此整理下这个库涉及到的知识点。相关测试代码已经放到github可以下载调试。 基础知识 maps maps用来描述进程的虚拟地址空间是如何使用的。总共包括六列,每列及其含义如下: 名字 含义 address 本段在虚拟内存中的地址范围。 perms 本段的