- 博客(34)
- 资源 (8)
- 收藏
- 关注
转载 一个小例子彻底搞懂 MVP
什么是 MVPMVP 全称:Model-View-Presenter ;MVP 是从经典的模式 MVC 演变而来,它们的基本思想有相通的地方:Controller/Presenter 负责逻辑的处理,Model 提供数据,View 负责显示。为什么要使用 MVP在讨论为什么要使用 MVP 架构之前,我们首先要了解传统的 MVC 的架构的特点及其缺点。首先看一下 MVC 架构的模型图,如...
2018-11-28 16:08:37 173
原创 微信小程序开发入门教程
做任何程序开发要首先找到其官方文档,我们先来看看其有哪些官方文档。微信小程序开发文档链接为:https://mp.weixin.qq.com/debug/wxadoc/dev/index.html,如下图: 这里就是做微信小程序开发的全部官方文档。知道了文档的位置,下面我们来介绍下如何做一个微信小程序开发: /****************************...
2018-11-22 20:35:29 332
原创 java运算符 与(&)、非(~)、或(|)、异或(^)
最近看HashMap源码,遇到了这样一段代码:1 static final int hash(Object key) {2 int h;3 return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);4 }于是我整理学习了以下知识:1.十进制转二进制...
2018-11-22 14:48:04 15990 5
转载 Android5.0,6.0,7.0新特性整理
背景Android5.0(Android Lollipop)是谷歌公司2014年10月发布的全新安卓系统,至今已经两年多。然而由于国产手机对安卓ROM的深度定制或修改,以及手机厂商、芯片制造商、运营商之间错综复杂的关系,我们更新最新安卓版本往往需要1年左右时间的等待。2015年5月发布了Android6.0(Android Marshmallow),2016年8月发布了Android7.0(An...
2018-11-20 18:31:24 742
转载 《Android 进阶之光》 读书笔记
https://blog.csdn.net/simplebam/article/details/80515009
2018-11-20 18:02:52 473
原创 给初学者的RxJava2.0教程(一)
前言以前使用过RxJava1只需要看看更新文档就知道怎么使用了,但还有一些以前没用过RxJava的朋友可能就不知道怎么办了,不知道该看RxJava1还是直接跳到RxJava2。所以写下这个教程, 帮助那些没有用过RxJava的朋友入门。注:如果你觉得写得不好,请直接批评指出。我先回答这个问题:学习RxJava2需要先学习RxJava1吗?这个问题就像论坛经常问学Java前需要先...
2018-11-20 18:00:54 95
转载 【Android】打开/读取文件的方法
public class IntentBuilder { public static Intent openFile(String filePath) { File file = new File(filePath); if (!file.exists()) return null; /* 取得扩展名 */ ...
2018-11-20 16:49:19 2258
转载 Android自定义view之基础canvas.drawPath方法
之前一篇我们主要了解实践了canvas的drawXXX方法,都是绘制一些很规矩的图形,例如圆形、矩形、直线、画点、画椭圆、绘制圆角矩形、绘制扇形、绘制弧线这些,大家也肯定发现了这些都是规规矩矩图形,那么如果要画一条折线,画一个三角形之类的自定义图形,该怎么办呢?这时候就改path出场了,对于canvas就是drawPath了。 那么path是什么呢?听听Android怎么说:“Th...
2018-11-20 16:29:06 1506
转载 Android canvas.drawArc() 画圆弧
public void drawArc(@NonNull RectF oval, float startAngle, float sweepAngle, boolean useCenter, @NonNull Paint paint) { drawArc(oval.left, oval.top, oval.right, oval.bottom, startA...
2018-11-19 16:25:52 4037
原创 网络运营商名称显示&SIM名称显示
一 网络名称显示这部分比較复杂。Spec对这也有明白的规定,依据其优先级由高往低介绍(其优先级參考TS 22.101),1. Enhanced Operator Name String。也就是Eons。此种方式的名称是存放在EF_PNN(PLMN Network Name, fid: 6FC5)和EF_OPL(Operator PLMN List, fid: 6FC6)中。EF_O...
2018-11-16 16:08:51 1456
转载 android 设置应用程序 默认值
Android中有时打开一个文件,系统会弹出一个应用程序选择列表供你选择.如果你把某个应用程序设为默认值,则不会弹出选择框,而会直接调用该程序.设置方法如下: PackageManager pm = getPackageManager(); IntentFilterfilter = new IntentFilter(); filter.addCategory("andro...
2018-11-15 09:49:43 1829
原创 Android学习笔记之性能优化SparseArray
学习内容:1.Android中SparseArray的使用.. 昨天研究完横向二级菜单,发现其中使用了SparseArray去替换HashMap的使用.于是乎自己查了一些相关资料,自己同时对性能进行了一些测试。首先先说一下SparseArray的原理. SparseArray(稀疏数组).他是Android内部特有的api,标准的jdk是没有这个类的.在Android内部用来...
2018-11-14 14:30:43 105
原创 Android 内核--Binder架构分析
一、Binder架构 在Android中,Binder用于完成进程间通信(IPC),即把多个进程关联在一起。比如,普通应用程序可以调用音乐播放服务提供的播放、暂停、停止等功能。Binder工作在Linux层面,属于一个驱动,只是这个驱动不需要硬件,或者说其操作的硬件是基于一小段内存。从线程的角度来讲,Binder驱动代码运行在内核态,客户端程序调用Binder是通过系统调用完成的。 ...
2018-11-14 13:50:21 218
转载 Binder:为什么要通过onTransact()调用目标方法
Binder:为什么要通过onTransact()调用目标方法 0x00 背景最近被提出一串问题:为什么android.os.Binder要提供onTransact()方法给子类重写。为什么要通过Client:invokeMethod -> onTransact() -> Service:targetMethod这一曲折过程来调用一个远程方法,为什么不能直接指定方法名称来调...
2018-11-14 10:19:30 1185
转载 android IPC通信中的UID和PID识别
IPCThreadState对象维护了2个变量 pid_t mCallingPid; uid_t mCallingUid; 从变量名称来看,这2个变量保存了进程的PID和UID,并且由于这两个变量由IPCThreadState对象维护,可见它们是与IPC相关的。具体它们保存的是...
2018-11-13 15:40:50 409
转载 Android 使用Messenger实现跨app通信
Android中使用跨进程通信有以下几种方式:文件、广播、aidl、messenger,今天要讲的是使用messenger来实现跨app通信也就是在两个不同的app中实现双向通信。其实Messenger底层也是使用aidl的方式来实现的,只不过其使用handler来处理消息,因为handler是线程安全的,所以Messenger也是线程安全的,自然Messenger只能处理单线程的问题,如果要使用...
2018-11-12 10:17:25 958
转载 Android多进程总结一:生成多进程(android:process属性)
前言正常情况下,一个apk启动后只会运行在一个进程中,其进程名为apk的包名,所有的组件都会在这个进程中运行,以下为DDMS的进程截屏:com.biyou.multiprocess为进程名,也是apk的包名, 但是如果需要将某些组件(如Service,Activity等)运行在单独的进程中,就需要用到android:process属性了。我们可以给android的组件设置android:p...
2018-11-09 10:58:06 13001
原创 android:process=":remote"属性解说
在学习Android Service组件的过程中碰到了一个问题,就是在Android应用的声明文件Manifest.xml中有时候会对相关的服务标签设置一个android:process=”:remote”,这个属性有什么作用呢?下面笔者就将自己整理的知识和大家分享。 在Android的帮助文档中我们可以了解到,一般情况下一个服务没有自己独立的进程,它一般是作为一个线程运行于它所在的应用的进程...
2018-11-09 10:34:16 773
原创 对Binder的浅显分析及AIDL的使用
通常情况下,作为一个android开发者不会直接接触到Binder,但Binder作为ipc机制最关键的一个环节,我们很有必要去了解他。其实在不知不觉中,大家肯定和Binder打过交道,比如我们bindService的时候,客户端会获取到一个远程服务器发送回来的Binder对象,通过操作这个对象我们可以获取服务端的数据或者执行某些服务端的操作。再比如,我么在获取各种系统服务的时候,Binder是作...
2018-11-09 09:49:28 268
原创 Android 手写Binder 教你理解android中的进程间通信
关于Binder,我就不解释的太多了,网上一搜资料一堆,但是估计还是很多人理解的有困难。今天就教你如何从 app层面来理解好Binder。其实就从我们普通app开发者的角度来看,仅仅对于android应用层的话,Binder就是客户端和服务端进行通信的媒介。AIDL就是我们理解Binder 最好的事例。我们都知道 我们写好aidl 文件以后,开发工具 会自动帮我们生成好代码。实际上 我...
2018-11-08 18:47:03 195
转载 ContentValues类详解
ContentValues类和Bundle类很类似,都是使用HashMap的泛型形式来存储的,并且都是HashMap<String, Object>()。但是ContentValues和Bundle有一个很明显的区别:Bundle可以存储Object对象,但是Contentvalues却只能存储基本类型的数据,相当于HashMap<String,基本数据类型>这种形式。究...
2018-11-06 21:30:08 13275
转载 JAVA之数组查询binarySearch()方法详解
binarySearch()方法提供了多种重载形式,用于满足各种类型数组的查找需要,binarySearch()有两种参数类型注:此法为二分搜索法,故查询前需要用sort()方法将数组排序,如果数组没有排序,则结果是不确定的,另外如果数组中含有多个指定值的元素,则无法保证找到的是哪一个。⑴.binarySearch(object[ ], object key);如果key在数组中,...
2018-11-06 16:59:30 19128 1
转载 Android-AsyncQueryHandler 详解【整理】
1,AsyncQueryHandler 简介 AsyncQueryHandler的目的就是为了将查询数据库的操作放到后台执行,当后台数据查询完了以后,再通知界面的更新,以此来提高前台页面的显示速度!当然你也可以使用ContentProvider去操作数据库。这在数据量很小的时候是没有问题的,但是如果数据量大了,可能导致UI线程发生ANR事件。当然你也可以写个Handler去做这些操作,只...
2018-11-06 11:15:58 817
转载 Handler官方范例AsyncQueryHandler源码解析
欢迎转载,但请保留作者链接:http://www.jianshu.com/p/b7fec0545368在阅读本文之前,你需要了解Handler作为Android中的线程间通信机制究竟是如何运作的,可以参考Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系源码/** * A helper class to help make handl...
2018-11-06 11:08:43 137
转载 AsyncQueryHandler的使用
AsyncQueryHandler简介:异步的查询操作帮助类,可以处理增删改(ContentProvider提供的数据)使用AsyncQueryHandler的场景:查询数据库,如果数据太多会造成主线程堵塞导致ANR,所以需要开启子线程,然后 用Handler将结果回传。而使用android系统提供的AsyncQueryHandler方便的实现这个过程。在一般的应用中可以使用Conte...
2018-11-06 10:52:41 259
转载 setNextMediaPlayer方法
Android r16版本上新增的方法,记录一下setNextMediaPlayer摘要:在Android4.1中,MediaPlayer实现两个完全独立的MediaPlayer类上执行无缝播放,这里介绍一下Android是如何实现无缝播放的。 一、使用方法 在第一个MediaPlayer类执行结束前的任何时间调用setNextMediaPlayer(MediaPlayer nex...
2018-11-06 09:31:21 1767
转载 Android 毛玻璃效果的实现
Android 毛玻璃效果,主要找到了3中实现方案,1、如果系统的api在16以上,可以使用系统提供的方法直接处理图片if (VERSION.SDK_INT > 16) { Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true); final R...
2018-11-05 15:39:47 2023
转载 Android 实现快速高斯模糊(毛玻璃)效果算法
先上代码:https://github.com/chenglin198751/BaseMyProject/blob/master/app/src/main/java/utils/FastBlurUtil.java如果下面的代码有找不到的方法,那么可以去这么项目里找,完整的项目地址是:https://github.com/chenglin198751/BaseMyProjectJava已经有人...
2018-11-05 15:30:58 1653
转载 Android电源管理之三:PowerManager.WakeLock源码详读
PowerManager.WakeLock 有加锁和解锁两种状态,加锁的方式有两种,一种是永久的锁,这样的锁除非显式的放开,是不会解锁的,所以这种锁用起来要非常的小心。第二种锁是超时锁,这种锁会在锁住后一段时间自动解锁。 在创建了PowerManager.WakeLock 后,有两种机制,第一种是不计数锁机制,另一种是计数锁机制。这可以通过setReferenceCounted(...
2018-11-02 20:59:19 388
转载 Android的PowerManager和PowerManager.WakeLock用法简析
之前的一个社区PDA项目在采集使用者坐标这个功能的时候,需要保持屏幕常亮,面对未涉及过的东西,网络是最好的学习工具,便去找相关的资料,发现原来可以使用PowerManager.WakeLock来实现要求的功能,以下的文字部分转载自网路上的一篇有关博客,感觉写的还比较清楚,可以学习并用来写到项目中,原文链接。 权限获取要进行电源的操作需要在AndroidManifest.xml...
2018-11-02 20:54:14 510
转载 性能优化十六之Wake_Lock唤醒锁以及JobScheduler使用
前言 上一篇博客记录了电量优化中的第一种优化,把一些不需要及时和用户交互的一些操作,放到当用户插上电源的时候。根据自己目前的知识了解,只知道三种优化方式,第二种和第三种方式接下来进行介绍。第二种方式:网络类型选择优化 目前大部分手机都支持4G网络,殊不知蜂窝移动信号是在所有的网络类型中是最消耗电量的,很多人在使用手机的过程中,发现如果一直在使用4G移动网络,电量会持续不...
2018-11-02 20:53:23 1797
原创 Java 正则表达式
正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World" 字符串。.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。下表列出了一些正则表达式的实例及描述...
2018-11-02 15:20:04 96
原创 Java正则表达式--Matcher.group函数的用法
原来,group是针对()来说的,group(0)就是指的整个串,group(1) 指的是第一个括号里的东西,group(2)指的第二个括号里的东西。最近学习正则表达式,发现Java中的一些术语与其他地方描述的有所差异。比如Java正则表达式中的“组”概念与《正则表达式必知必会》一书中讲述的“子表达式”其实是一样的,只是表述不同而已。由此也引发了使用JavaAPI时对group(int gro...
2018-11-02 14:17:24 1072
转载 Android解惑 - 为什么要用Fragment.setArguments(Bundle bundle)来传递参数
Fragment在Android3.0开始提供,并且在兼容包中也提供了Fragment特性的支持。Fragment的推出让我们编写和管理用户界面更快捷更方便了。但当我们实例化自定义Fragment时,为什么官方推荐Fragment.setArguments(Bundle bundle)这种方式来传递参数,而不推荐通过构造方法直接来传递参数呢?为了弄清这个问题,我们可以做一个测试,分别测试下这两...
2018-11-01 21:20:03 152
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人