- 博客(100)
- 资源 (1)
- 收藏
- 关注
转载 Android的子线程能更新UI吗?
Android单线程模型是这样描述的:Android UI操作并不是线程安全的,并且这些操作必须在UI线程执行 如果在其它线程访问UI线程,Android提供了以下的方式:Activity.runOnUiThread(Runnable)View.post(Runnable)View.postDelayed(Runnable, long)Handler 为什么呢?在子线...
2020-03-24 12:40:51
418
转载 Rxjava源码详解
引言本文不对Rxjava的基本使用进行讲解,仅对源码做分析,如果你对Rxjava的基本使用还有不清楚的,建议学习官方文档之后再阅读本文ReactiveX文档中文翻译Rxjava本文会逐一解析Rxjava的create()、subscribe()、操作符、subscribeOn()、obsweveOn()、背压的源码,模式是先给出一段模版代码,然后逐渐深入分析正文Create()...
2020-03-17 18:34:01
524
转载 Android基础控件使用指南
新建一个项目UIWidgetTest,简单起见,这里我们允许Android Studio自动创建活动,活动名和布局都使用默认值TextViewTextView可以说是最简单的一种控件了,下面来说TextView的更多用法,修改activity_main.xml中的代码,代码如下所示<?xml version="1.0" encoding="utf-8"?><Lin...
2020-03-13 18:34:12
892
转载 Bitmap 图片优化
1、BitmapFactory解析Bitmap的原理BitmapFactory提供的解析Bitmap的静态工厂方法有以下五种:Bitmap decodeFile(...)Bitmap decodeResource(...)Bitmap decodeByteArray(...)Bitmap decodeStream(...)Bitmap decodeFileDescriptor(....
2020-03-10 23:11:38
224
转载 Android的内存泄漏怎么治-----------MAT使用教程
概述对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。JVM 能够记录下问题发生时系统的部分运行状态,并将其存储在堆转储 (Heap Dump) 文件中,从而为我们分析和诊断问题提供了重要的依据。通常内存泄露分析被认为是一件很有难度的工作,一般由团队中的资深人士进...
2020-03-06 12:58:01
300
转载 Android各版本特性
Android6.0新特性1.动态权限管理(Runtime Permissions)Android 6.0引入了动态权限管理,将标记为危险的权限从安装时权限(Install Time Permission)模型移动到运行时权限模型(Runtime Permissions)2.指纹识别(Fingerprint Support)Android 6.0则在系统层面加入指纹识别,能提供原生...
2020-02-25 15:21:04
3450
转载 动态代理----------------架构师的必备武器
代理模式为其他对象提供一个代理以控制对某个对象的访问。代理类主要负责为委托了(真实对象)预处理消息、过滤消息、传递消息给委托类,代理类不现实具体服务,而是利用委托类来完成服务,并将执行结果封装处理。其实就是代理类为被代理类预处理消息、过滤消息并在此之后将消息转发给被代理类,之后还能进行消息的后置处理。代理类和被代理类通常会存在关联关系(即上面提到的持有的被带离对象的引用),代理类本身不实现...
2020-02-21 23:21:43
298
转载 详解java的4大引用类型(强引用、软引用、弱引用和虚引用)
前言Java执行GC判断对象是否存活有两种方式其中一种是引用计数。引用计数:Java堆中每一个对象都有一个引用计数属性,引用每新增1次计数加1,引用每释放1次计数减1。在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于(reachable)可达状态,程序才能使用它。从JDK 1.2版本开始,对象的引用被划分为4种级别,...
2020-02-01 18:17:00
184
转载 玩转Android的高性能数据库框架------------GreenDao
一、GreenDao 简介greenDAO 是一款开源的面向 Android 的轻便、快捷的 ORM 框架,将 Java 对象映射到 SQLite 数据库中,我们操作数据库的时候,不在需要编写复杂的 SQL语句, 在性能方面,greenDAO 针对 Android 进行了高度优化, 最小的内存开销 、依赖体积小 同时还是支持数据库加密。greenDAO 官网地址:gr...
2020-01-10 15:50:54
572
转载 Android 配置网络安全策略
在 Android 7.0 以上的系统中,Google 引入了一种名为网络安全配置(Network Security Configuration)的功能。据官方文档所说,这个功能可以让开发者在一个安全的声明性 XML 配置文件中自定义应用的网络安全设置,而无需修改应用代码。也可以针对特定域和特定应用配置这些设置。可以参考官方文档原文https://developer.android.google...
2019-10-15 15:16:06
1914
转载 Android界面过渡动画详解
实现 activity 跳转动画的几种方式阅读 13424收藏 3402016-07-09原文链接:blog.csdn.net转载请标明出处:一片枫叶的专栏上一篇文章中我们讲解了在Activity启动过程中获取组件宽高的五种方式。在Activity的启动过程中如果我们直接在生命周期方法中通过view.getWidth()或者是view.getHeight()方法获取组件...
2019-10-11 14:55:48
2417
转载 Fragment生命周期详解
序言Fragment从Android v3.0版本开始引入的,随着界面布局的复杂化,处理起来也更加的复杂,引入Fragment可以把Activity拆分成多个部分。一个Activity可以同时组合多个Fragment,一个Fragment也可被多个Activity 复用。Fragment可以响应自己的输入事件,并拥有自己的生命周期,但它们的生命周期直接被其所属的Activity的生命周期控制。...
2019-10-10 12:03:44
25640
1
转载 在独立进程中运行webview
App中大量Web页面的使用容易导致App内存占用巨大,存在内存泄露,崩溃率高等问题,WebView独立进程的使用是解决Android WebView相关问题的一个合理的方案。为什么要采用WebView独立进程Android WebView的问题WebView导致的OOM问题 Android版本不同,采用了不同的内核,兼容性Crash WebView代码质量,WebView和N...
2019-09-18 17:51:53
2877
转载 Android项目发布 ---- Jcenter篇
通过Gradle把自己开发的开源项目发布到公共仓库JCenter中,可以很方便地在其他项目中引用。关于Maven, JCenter, MavenCentral等易于混淆的概念,这篇文章做了非常详尽的阐述:拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建,这里简要概括下。Maven对于Android开发者而言,Maven是一种构建工具,Maven包是由POM(...
2019-09-17 18:30:12
284
转载 ProGuard ------------- Android 混淆详解
启用的ProGuard在应用夹数文件下build.gradle中进行配置,将minifyEnabled对划线true:<span style="color:#404040"><span style="color:#333333"><code><span style="color:#333333">buildTypes</span>...
2019-09-17 14:37:00
716
转载 非阻塞网络编程详解------IO模型
1、前言随着互联网的发展,面对海量用户高并发业务,传统的阻塞式的服务端架构模式已经无能为力。本文(和下篇《高性能网络编程(六):一文读懂高性能网络编程中的线程模型》)旨在为大家提供有用的高性能网络编程的I/O模型概览以及网络服务进程模型的比较,以揭开设计和实现高性能网络架构的神秘面纱。限于篇幅原因,请将本文与《高性能网络编程(六):一文读懂高性能网络编程中的线程模型》连起来读,这样会让知识更连...
2019-09-04 12:42:31
474
转载 服务器端口被占用了怎么办,看这一篇就行了
当你兴致冲冲的写完代码,准备在服务器上一览网站的容貌时,突然电脑告诉你,服务器启动异常。嗯?那肿么办?来看看我的悲催历程。一、问题由来:当我想在本地启动一个http-server来查看静态网页的时候,发现服务并不能被启动。查看原因后,得知: 1 Error: listen EADDRINUSE 0.0.0.0:8080 二、分析问题...
2019-09-04 10:11:33
8051
1
转载 教你怎样安装rpm
在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装、卸载及管理等操作。RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件。Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装。RPM 有五种操作模式,分别为:安装、卸载、升级、查询和验证。RPM 安装操作命令:rpm...
2019-09-03 18:19:13
34679
3
转载 Protocol Buffer详解 ------- 带你学习Google爸爸的通用数据序列化技术
前言Protocol Buffer是Google的语言中立的,平台中立的,可扩展机制的,用于序列化结构化数据 - 对比XML,但更小,更快,更简单。您可以定义数据的结构化,然后可以使用特殊生成的源代码轻松地在各种数据流中使用各种语言编写和读取结构化数据。定义消息类型先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的页...
2019-08-30 10:49:53
345
转载 RSA详解 ----- Android中常用的非对称加密算法
1.android 端加密方式非对称加密 (RSA) 对称加密 (DES,AES,3DES) MD5加密 BASE64编码ps:这篇主要介绍android rsa加密2.Rsa加密原理1.随机选择两个大质数p和q,p不等于q,计算N=pq;2.选择一个大于1小于N的自然数e,e必须与(p-1)(q-1)互素。3.用公式计算出d:d×e = 1 (mod (p-...
2019-08-26 14:41:54
395
转载 实现安卓手机的通话与短信息捕获
一.监听安卓手机通知栏推送信息最近在需求中需要实现监听安卓手机通知栏信息的功能,比如实时获取qq、微信、短信消息。一开始评估是件挺简单的事儿,实现 NotificationListenerService,直接上代码。实现步骤如下:1.添加<intent-filter>:<service android:name="com.example.yuanting.msgpu...
2019-08-21 14:56:26
639
转载 为子组件添加Activity的生命周期监听-----------------Lifecycle
Lifecycle 是官方提供的架构组件之一,目前已经是稳定版;与它一起提供出来的组件还有ViewModel、LiveData、RoomLifecycle 有什么用在日常开发中,我们经常需要封装一些自定义的View或者组件,我们有时后需要它们的生命周期随Activity或Fragment的生命周期发生变化,例如:我们实现了一个循环播放的轮播广告图组件Banner,在使用该组件时,我们希望A...
2019-08-09 14:23:03
434
转载 IOS定时器使用详解
前言定时器的使用是软件开发基础技能,用于延时执行或重复执行某些方法。我相信大部分人接触iOS的定时器都是从这段代码开始的:[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(action:) userInfo:nil repeats:YES]但是你真的会用吗?正文iOS定时...
2019-07-31 15:41:58
860
转载 AppleDoc------------使用xcode导出api文档
众所周知,程序员最讨厌的两件事:1、接手的项目没有注释2、给自己的项目添加注释。一般一个项目上线后,公司都要求项目代码进行详细注释和到处文档,然后才封版,所以就用到了今天我整理的这篇文章,使用appledoc自动生成项目文档。appdoc的使用有一个前提,注释要符合标准,值得庆幸的是Xcode8之后,Xcode已经集成了注释插件,点击command+option+/即可,此处不做过多介绍,效果...
2019-07-25 15:04:14
805
转载 Masonry详解-----让你从此脱离xib
目前iOS开发中大多数页面都已经开始使用Interface Builder的方式进行UI开发了,但是在一些变化比较复杂的页面,还是需要通过代码来进行UI开发的。而且有很多比较老的项目,本身就还在采用纯代码的方式进行开发。而现在iPhone和iPad屏幕尺寸越来越多,虽然开发者只需要根据屏幕点进行开发,而不需要基于像素点进行UI开发。但如果在项目中根据不同屏幕尺寸进行各种判断,写死坐标的话,这...
2019-07-16 10:23:52
315
转载 IOS信息机制详解
问题的背景IOS中委托模式和消息机制基本上开发中用到的比较多,一般最开始页面传值通过委托实现的比较多,类之间的传值用到的比较多,不过委托相对来说只能是一对一,比如说页面A跳转到页面B,页面的B的值改变要映射到页面A,页面C的值改变也需要映射到页面A,那么就需要需要两个委托解决问题。NSNotificaiton则是一对多注册一个通知,之后回调很容易解决以上的问题。概念iOS消息通知机制算...
2019-07-15 16:51:14
163
转载 ios 动画详解
前言:在APP程序开发中,优美的界面能够大大提高用户的体验,而优美的界面离不开好看的动画效果。下面废话少说,直接进入主题。在iOS实际开发中常用的动画无非是以下四种:UIView动画,核心动画,帧动画,自定义转场动画。下面我们逐个介绍。1.UIView动画能实现UIView动画的属性UIView动画是iOS开发中最廉价也是最常用的动画。UIView动画能够设置的动画属性有:f...
2019-07-12 11:13:26
450
转载 Android调用系统相机拍照
参考:Taking Photos Simply FileProvider 项目地址(好多人找我要,我传到百度云啦,大家自取):链接:https://pan.baidu.com/s/1nWsoE0eSXCRP4CqPWAg7Zg 密码:d865一. 步骤简介要说拍照,如果只是调用系统相机的话,步骤比较简单,就是利用隐式Intent打开相机,然后会相机会传回来排好的图片,传回来的图片分为...
2019-06-19 16:41:52
5561
4
转载 Netty架构详解
1、引言Netty是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文基于Netty 4.1展开介绍相关理论模型,使用场景,基本组件、整体架构,知其然且知其所以然,希望给大家在实际开发实践、学习开源项目方面提供参考。本文作者的另两篇《高性能网络编程(五):一文读懂高性能网络编程中的I/O模型》、《高性能网络编程(六):一文读懂高性...
2019-06-03 16:16:41
192
转载 Android中的双缓冲渲染----SurfaceView
Android中提供了View进行绘图处理,View可以满足大部分的绘图需求,但是有时候,View却显得力不从心,所以Android提供了SurfaceView给Android开发者,以满足更多的绘图需求。下面就让我们一起来了解一下SurfaceView。一、为什么要使用SurfaceView我们知道View是通过刷新来重绘视图,系统通过发出VSSYNC信号来进行屏幕的重绘,刷新的时...
2019-05-28 15:32:03
738
转载 RecycleView将指定item滚动到顶部
关于平滑,其实listview可以直接通过调用这个方法 smoothScrollToPosition(int position) Smoothly scroll to the specified adapter position. // 滑动到适配器指定位置Recycleview对于平滑 ,也提供了两种方法:recycleview.smoothScrollBy();//需要提供...
2019-05-28 15:24:35
4568
2
转载 解析时间复杂度 O(log n)
原文地址:What does the time complexity O(log n) actually mean? 原文作者:Maaz 译文出自:掘金翻译计划 译者:cdpath 校对者:zaraguo (zaraguo),whatbeg (Qiu Hu)预先知道算法的复杂度是一回事,了解其后的原理是另一件事情。不管你是计算机科班出身还是想有效解决最优化问题,如果想要用...
2019-05-09 14:23:58
2239
转载 调用startActivity时出现 android.util.androidruntimeexception的解决方案
在非Activity中使用startActivity:Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag问题描述在APP 1中启动APP 2中的Activity。Intent intent = new Intent(Intent.ACT...
2019-04-19 11:40:29
1686
转载 PopupWindow使用详解
创建一般用的构造方法.PopupWindow () // 创建一个空的PopupWindowPopupWindow (View contentView) PopupWindow (int width, int height)PopupWindow (View contentView, // PopupWindow的内容View, 相当于se...
2019-04-19 10:04:11
295
转载 OkHttp 使用详解
1. 历史上Http请求库优缺点在讲述OkHttp之前, 我们看下没有OkHttp的时代, 我们是如何完成http请求的.在没有OkHttp的日子, 我们使用HttpURLConnection或者HttpClient. 那么这两者都有什么优缺点呢? 为什么不在继续使用下去呢?HttpClient是Apache基金会的一个开源网络库, 功能十分强大, API数量众多, 但是正是由于庞大的...
2019-04-10 15:32:58
276
转载 Picasso优化攻略
0 说明现在Android开源库中有许多图片加载框架,本文以picasso为例,总结下开发过程中的一些优化经验,使用的picasso版本如下compile 'com.squareup.picasso:picasso:2.5.2'1 图片裁剪在列表页尽量使用裁剪后的图片,在查看大图模式下才加载完整的图片。图片裁剪示例Picasso.with( imageView.get...
2019-04-02 11:55:11
179
转载 RecycleView使用详解
常用方法RecyclerView 与 ListView、GridView 类似,都是可以显示同一种类型 View 的集合的控件。首先看看最简单的用法,四步走:0.接入 build.gradle 文件中加入compile 'com.android.support:recyclerview-v7:24.0.0'1.创建对象RecyclerView recyclerview ...
2019-03-25 16:00:29
672
转载 gradle 指定导出包的名字和路径
为了方便识别apk文件,一般我们都希望通过androoid studio打包的文件,会带上app的名字,时间,之类的,使用多渠道打包的时候,还希望带上渠道名称以前我都这样做 //修改生成的apk名字android{ applicationVariants.all { variant -> if (variant.buildType.name...
2019-02-14 16:53:28
6224
1
转载 Android Gradle 使用详解
前言为什么需要学Gradle?Gradle 是 Android 现在主流的编译工具,虽然在Gradle 出现之前和之后都有对应更快的编译工具出现,但是 Gradle 的优势就在于它是亲儿子,Gradle 确实比较慢,这和它的编译过程有关,但是现在的Gradle 编译速度已经有了成倍提高。除此之外,相对其他编译工具,最重要的,他和 Android Studio 的关系非常紧密,可以说对于一些...
2019-02-13 16:55:34
395
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人