![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
MoneyProgramming
如果能遇到好的老师,也许猴子也能学会编程
展开
-
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 · 426 阅读 · 0 评论 -
Rxjava源码详解
引言本文不对Rxjava的基本使用进行讲解,仅对源码做分析,如果你对Rxjava的基本使用还有不清楚的,建议学习官方文档之后再阅读本文ReactiveX文档中文翻译Rxjava本文会逐一解析Rxjava的create()、subscribe()、操作符、subscribeOn()、obsweveOn()、背压的源码,模式是先给出一段模版代码,然后逐渐深入分析正文Create()...转载 2020-03-17 18:34:01 · 528 阅读 · 0 评论 -
Android基础控件使用指南
新建一个项目UIWidgetTest,简单起见,这里我们允许Android Studio自动创建活动,活动名和布局都使用默认值TextViewTextView可以说是最简单的一种控件了,下面来说TextView的更多用法,修改activity_main.xml中的代码,代码如下所示<?xml version="1.0" encoding="utf-8"?><Lin...转载 2020-03-13 18:34:12 · 895 阅读 · 0 评论 -
Bitmap 图片优化
1、BitmapFactory解析Bitmap的原理BitmapFactory提供的解析Bitmap的静态工厂方法有以下五种:Bitmap decodeFile(...)Bitmap decodeResource(...)Bitmap decodeByteArray(...)Bitmap decodeStream(...)Bitmap decodeFileDescriptor(....转载 2020-03-10 23:11:38 · 226 阅读 · 0 评论 -
Android的内存泄漏怎么治-----------MAT使用教程
概述对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。JVM 能够记录下问题发生时系统的部分运行状态,并将其存储在堆转储 (Heap Dump) 文件中,从而为我们分析和诊断问题提供了重要的依据。通常内存泄露分析被认为是一件很有难度的工作,一般由团队中的资深人士进...转载 2020-03-06 12:58:01 · 301 阅读 · 0 评论 -
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 · 3455 阅读 · 0 评论 -
动态代理----------------架构师的必备武器
代理模式为其他对象提供一个代理以控制对某个对象的访问。代理类主要负责为委托了(真实对象)预处理消息、过滤消息、传递消息给委托类,代理类不现实具体服务,而是利用委托类来完成服务,并将执行结果封装处理。其实就是代理类为被代理类预处理消息、过滤消息并在此之后将消息转发给被代理类,之后还能进行消息的后置处理。代理类和被代理类通常会存在关联关系(即上面提到的持有的被带离对象的引用),代理类本身不实现...转载 2020-02-21 23:21:43 · 301 阅读 · 0 评论 -
详解java的4大引用类型(强引用、软引用、弱引用和虚引用)
前言Java执行GC判断对象是否存活有两种方式其中一种是引用计数。引用计数:Java堆中每一个对象都有一个引用计数属性,引用每新增1次计数加1,引用每释放1次计数减1。在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于(reachable)可达状态,程序才能使用它。从JDK 1.2版本开始,对象的引用被划分为4种级别,...转载 2020-02-01 18:17:00 · 185 阅读 · 0 评论 -
玩转Android的高性能数据库框架------------GreenDao
一、GreenDao 简介greenDAO 是一款开源的面向 Android 的轻便、快捷的 ORM 框架,将 Java 对象映射到 SQLite 数据库中,我们操作数据库的时候,不在需要编写复杂的 SQL语句, 在性能方面,greenDAO 针对 Android 进行了高度优化, 最小的内存开销 、依赖体积小 同时还是支持数据库加密。greenDAO 官网地址:gr...转载 2020-01-10 15:50:54 · 575 阅读 · 0 评论 -
Android 配置网络安全策略
在 Android 7.0 以上的系统中,Google 引入了一种名为网络安全配置(Network Security Configuration)的功能。据官方文档所说,这个功能可以让开发者在一个安全的声明性 XML 配置文件中自定义应用的网络安全设置,而无需修改应用代码。也可以针对特定域和特定应用配置这些设置。可以参考官方文档原文https://developer.android.google...转载 2019-10-15 15:16:06 · 1927 阅读 · 0 评论 -
Android Gradle 使用详解
前言为什么需要学Gradle?Gradle 是 Android 现在主流的编译工具,虽然在Gradle 出现之前和之后都有对应更快的编译工具出现,但是 Gradle 的优势就在于它是亲儿子,Gradle 确实比较慢,这和它的编译过程有关,但是现在的Gradle 编译速度已经有了成倍提高。除此之外,相对其他编译工具,最重要的,他和 Android Studio 的关系非常紧密,可以说对于一些...转载 2019-02-13 16:55:34 · 398 阅读 · 0 评论 -
Android调用系统相机拍照
参考:Taking Photos Simply FileProvider 项目地址(好多人找我要,我传到百度云啦,大家自取):链接:https://pan.baidu.com/s/1nWsoE0eSXCRP4CqPWAg7Zg 密码:d865一. 步骤简介要说拍照,如果只是调用系统相机的话,步骤比较简单,就是利用隐式Intent打开相机,然后会相机会传回来排好的图片,传回来的图片分为...转载 2019-06-19 16:41:52 · 5586 阅读 · 4 评论 -
Netty架构详解
1、引言Netty是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文基于Netty 4.1展开介绍相关理论模型,使用场景,基本组件、整体架构,知其然且知其所以然,希望给大家在实际开发实践、学习开源项目方面提供参考。本文作者的另两篇《高性能网络编程(五):一文读懂高性能网络编程中的I/O模型》、《高性能网络编程(六):一文读懂高性...转载 2019-06-03 16:16:41 · 193 阅读 · 0 评论 -
Android中的双缓冲渲染----SurfaceView
Android中提供了View进行绘图处理,View可以满足大部分的绘图需求,但是有时候,View却显得力不从心,所以Android提供了SurfaceView给Android开发者,以满足更多的绘图需求。下面就让我们一起来了解一下SurfaceView。一、为什么要使用SurfaceView我们知道View是通过刷新来重绘视图,系统通过发出VSSYNC信号来进行屏幕的重绘,刷新的时...转载 2019-05-28 15:32:03 · 745 阅读 · 0 评论 -
RecycleView将指定item滚动到顶部
关于平滑,其实listview可以直接通过调用这个方法 smoothScrollToPosition(int position) Smoothly scroll to the specified adapter position. // 滑动到适配器指定位置Recycleview对于平滑 ,也提供了两种方法:recycleview.smoothScrollBy();//需要提供...转载 2019-05-28 15:24:35 · 4570 阅读 · 2 评论 -
调用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 · 1694 阅读 · 0 评论 -
PopupWindow使用详解
创建一般用的构造方法.PopupWindow () // 创建一个空的PopupWindowPopupWindow (View contentView) PopupWindow (int width, int height)PopupWindow (View contentView, // PopupWindow的内容View, 相当于se...转载 2019-04-19 10:04:11 · 296 阅读 · 0 评论 -
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 阅读 · 0 评论 -
OkHttp 使用详解
1. 历史上Http请求库优缺点在讲述OkHttp之前, 我们看下没有OkHttp的时代, 我们是如何完成http请求的.在没有OkHttp的日子, 我们使用HttpURLConnection或者HttpClient. 那么这两者都有什么优缺点呢? 为什么不在继续使用下去呢?HttpClient是Apache基金会的一个开源网络库, 功能十分强大, API数量众多, 但是正是由于庞大的...转载 2019-04-10 15:32:58 · 276 阅读 · 0 评论 -
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 · 675 阅读 · 0 评论 -
为子组件添加Activity的生命周期监听-----------------Lifecycle
Lifecycle 是官方提供的架构组件之一,目前已经是稳定版;与它一起提供出来的组件还有ViewModel、LiveData、RoomLifecycle 有什么用在日常开发中,我们经常需要封装一些自定义的View或者组件,我们有时后需要它们的生命周期随Activity或Fragment的生命周期发生变化,例如:我们实现了一个循环播放的轮播广告图组件Banner,在使用该组件时,我们希望A...转载 2019-08-09 14:23:03 · 434 阅读 · 0 评论 -
Android各种数据存储方式
SharedPreferencesSharedPreferences使用键值对的形式保存原始类型的数据使用方式// 获取以Activity类名命名的SharedPreferencesmActivityPreferences = getPreferences(MODE_PRIVATE);// 获取自己命名的SharedPreferencesmSharedPreferences =...转载 2018-11-06 15:47:08 · 193 阅读 · 0 评论 -
Android界面过渡动画详解
实现 activity 跳转动画的几种方式阅读 13424收藏 3402016-07-09原文链接:blog.csdn.net转载请标明出处:一片枫叶的专栏上一篇文章中我们讲解了在Activity启动过程中获取组件宽高的五种方式。在Activity的启动过程中如果我们直接在生命周期方法中通过view.getWidth()或者是view.getHeight()方法获取组件...转载 2019-10-11 14:55:48 · 2420 阅读 · 0 评论 -
Fragment生命周期详解
序言Fragment从Android v3.0版本开始引入的,随着界面布局的复杂化,处理起来也更加的复杂,引入Fragment可以把Activity拆分成多个部分。一个Activity可以同时组合多个Fragment,一个Fragment也可被多个Activity 复用。Fragment可以响应自己的输入事件,并拥有自己的生命周期,但它们的生命周期直接被其所属的Activity的生命周期控制。...转载 2019-10-10 12:03:44 · 25664 阅读 · 1 评论 -
在独立进程中运行webview
App中大量Web页面的使用容易导致App内存占用巨大,存在内存泄露,崩溃率高等问题,WebView独立进程的使用是解决Android WebView相关问题的一个合理的方案。为什么要采用WebView独立进程Android WebView的问题WebView导致的OOM问题 Android版本不同,采用了不同的内核,兼容性Crash WebView代码质量,WebView和N...转载 2019-09-18 17:51:53 · 2890 阅读 · 0 评论 -
Android项目发布 ---- Jcenter篇
通过Gradle把自己开发的开源项目发布到公共仓库JCenter中,可以很方便地在其他项目中引用。关于Maven, JCenter, MavenCentral等易于混淆的概念,这篇文章做了非常详尽的阐述:拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建,这里简要概括下。Maven对于Android开发者而言,Maven是一种构建工具,Maven包是由POM(...转载 2019-09-17 18:30:12 · 285 阅读 · 0 评论 -
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 · 723 阅读 · 0 评论 -
Protocol Buffer详解 ------- 带你学习Google爸爸的通用数据序列化技术
前言Protocol Buffer是Google的语言中立的,平台中立的,可扩展机制的,用于序列化结构化数据 - 对比XML,但更小,更快,更简单。您可以定义数据的结构化,然后可以使用特殊生成的源代码轻松地在各种数据流中使用各种语言编写和读取结构化数据。定义消息类型先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的页...转载 2019-08-30 10:49:53 · 349 阅读 · 0 评论 -
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 · 399 阅读 · 0 评论 -
实现安卓手机的通话与短信息捕获
一.监听安卓手机通知栏推送信息最近在需求中需要实现监听安卓手机通知栏信息的功能,比如实时获取qq、微信、短信消息。一开始评估是件挺简单的事儿,实现 NotificationListenerService,直接上代码。实现步骤如下:1.添加<intent-filter>:<service android:name="com.example.yuanting.msgpu...转载 2019-08-21 14:56:26 · 645 阅读 · 0 评论 -
FCM使用详解
FCM,即Firebase Cloud MessagingFirebase,Firebase是一家实时后端数据库创业公司,它能帮助开发者很快的写出Web端和移动端的应用。自2014年10月Google收购Firebase以来,用户可以在更方便地使用Firebase的同时,结合Google的云服务。Google在今天2016的I/O大会上发表新版Firebase,Firebase是专为...转载 2019-02-13 15:58:16 · 34573 阅读 · 5 评论 -
安卓常用框架简述
这篇博客5月份写创业项目的时候整理的,由于当时是快速开发,所以用到一些现成的开源库,整理起来方便自己和大家。近期博客域名备案,暂时关停转移到简书,再次更新了一些库。系统框架1. 网络请求名称 描述 Android Async HTTP Android异步HTTP库 AndroidAsync 异步Socket,HTTP(客户端+服务器),WebSocket,和s...转载 2019-02-13 14:46:52 · 5394 阅读 · 0 评论 -
drawable vs mipmap,我的图片该放到哪个文件夹呢?
最近进一步看了一些关于drawable和mipmap两种图片文件夹区别的文章,现将一些小知识点整理在一起,以便以后查阅。我们知道Android Studio项目当中有drawable和mipmap文件夹,都是可以用来放图片的,那么他们有什么区别呢?根据google官方的介绍,google推荐将launcher icon放在mipmap目录中,其他的图片都还是应该放在drawable目录...转载 2019-02-13 10:06:42 · 4586 阅读 · 0 评论 -
Android文件读写
一、概要 apk中有两种资源文件,raw下的和assert下的,这些数据只能读取,不能写入。更重要的是该目录下的文件大小不能超过1M。 SD卡中的文件使用FileInputStream和FileOutputStream进行文件的操作。 存放在数据区(/data/data/..)的文件只能使用openFileOutput和openFileInput进行操作。注意这里不能使用...转载 2018-11-08 15:08:23 · 807 阅读 · 0 评论 -
Google Play支付接入(in-app Billing)
Google Play in-app Billing的接入过程需要阅读接入文档。官方的接入文档地址为:https://developer.android.com/google/play/billing/api.html(1)Google Play开发者控制台Google Play开发者控制台是管理应用,配置商品和发布的后台。参考地址为:https://developer.an...转载 2018-11-08 14:55:59 · 24306 阅读 · 1 评论 -
java中静态代码块的用法 static用法详解
java中静态代码块的用法 static用法详解(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这...转载 2016-02-22 20:16:54 · 304 阅读 · 1 评论 -
深入理解java线程池—ThreadPoolExecutor
几句闲扯:首先,我想说java的线程池真的是很绕,以前一直都感觉新建几个线程一直不退出到底是怎么实现的,也就有了后来学习ThreadPoolExecutor源码。学习源码的过程中,最恶心的其实就是几种状态的转换了,这也是ThreadPoolExecutor的核心。花了将近小一周才大致的弄明白ThreadPoolExecutor的机制,遂记录下来。线程池有多重要#####线程是一个程序员一定...转载 2018-11-05 16:56:42 · 177 阅读 · 0 评论 -
Android避免OOM(内存优化)
Android内存优化是性能优化很重要的一部分,而如何避免OOM又是内存优化的核心。Android内存管理机制android官网有一篇文章Android是如何管理应用的进程与内存分配Android系统的Dalvik虚拟机扮演了内存垃圾自动回收的角色。OOM介绍(out of memory 内存溢出)Android和java中都会出现由于不良代码引起的内存泄露,为了使Andro...转载 2018-11-05 15:19:50 · 230 阅读 · 0 评论 -
Picasso的内存优化方案
0 说明现在Android开源库中有许多图片加载框架,本文以picasso为例,总结下开发过程中的一些优化经验,使用的picasso版本如下compile 'com.squareup.picasso:picasso:2.5.2'1 图片裁剪在列表页尽量使用裁剪后的图片,在查看大图模式下才加载完整的图片。图片裁剪示例Picasso.with( imageView.get...转载 2018-11-07 11:57:00 · 353 阅读 · 0 评论 -
Android常用存储路径的获取方法
在了解存储路径之前,先来看看Android QQ的文件管理界面,了解一下QQ的数据文件路径来源,到底是来源于什么地方?QQ 文件截图手Q文件管理对应存储目录我的文件:是指放在QQ指定目录下的文件:/tencent/QQfile_recv/(顺便说一下微信的存储目录:/tencent/MicroMsg/Download/)手机内存:其实是内部存储的根目录,在ES文件浏览器对...转载 2018-11-06 14:25:04 · 621 阅读 · 0 评论