android
WS-611
好人
展开
-
MD5Utils
package com.wangshun.ms.utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * author:WS * version:1.0 * Created on 2016/1/26 at 13:23. */ public class...原创 2016-04-12 20:48:43 · 684 阅读 · 0 评论 -
Bitmap的分析与使用
Bitmap的分析与使用 Bitmap的创建创建Bitmap的时候,Java不提供new Bitmap()的形式去创建,而是通过BitmapFactory中的静态方法去创建,如:BitmapFactory.decodeStream(is);//通过InputStream去解析生成Bitmap(这里就不贴BitmapFactory中创建Bitmap的方法了,大家可以自己去看它的源码),我们跟进Bitm转载 2017-06-22 09:28:53 · 509 阅读 · 0 评论 -
EventBus用法详解
EventBus概述EventBus是一款针对Android优化的发布/订阅(publish/subscribe)事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息。简化了应用程序内各组件间、组件与后台线程间的通信。优点是开销小,代码更优雅。以及将发送者和接收者解耦。比如请求网络,等网络返回时通过Handle转载 2017-06-22 09:29:58 · 236 阅读 · 0 评论 -
Fragment
Fragment为何产生 同时适配手机和平板、UI和逻辑的共享。 介绍 Fragment也会被加入回退栈中。 Fragment拥有自己的生命周期和接受、处理用户的事件 可以动态的添加、替换和移除某个Fragment 生命周期 必须依存于ActivityFragment依附于Activity的生命状态生命周期中那么多方法,懵逼了的话我们就一起来看一下每一个生命周期方法的含义吧。Fragment生命周期原创 2017-06-22 09:30:39 · 155 阅读 · 0 评论 -
Git操作
Git 操作git 命令 创建本地仓库 git init 获取远程仓库 git clone [url] 例:git clone https://github.com/you/yourpro.git 创建远程仓库 // 添加一个新的 remote 远程仓库 git remote add [remote-name] [url] 例:git remote add origin https://github原创 2017-06-22 09:31:00 · 178 阅读 · 0 评论 -
Handler内存泄漏分析及解决
Handler内存泄漏分析及解决一、介绍首先,请浏览下面这段handler代码:public class SampleActivity extends Activity { private final Handler mLeakyHandler = new Handler() { @Override public void handleMessage(Message msg) {原创 2017-06-22 09:31:31 · 168 阅读 · 0 评论 -
Android开发知识点
1、RecyclerView计算滑动距离 2、最全的Android 颜色透明度 3、Android样式的开发 4、用SpannableString打造绚丽多彩的文本显示效果 5、Android自定义控件三部曲文章索引 6、判断RecyclerView到达底部的方法 7、用ColorFilter为安卓按钮增加效果 8、PageTransformer实现一个层叠的卡片 9、制作圆形图片...转载 2019-02-20 20:16:47 · 148 阅读 · 0 评论 -
Binder机制
Binder机制首先Binder是Android系统进程间通信(IPC)方式之一。Binder使用Client-Server通信方式。Binder框架定义了四个角色:Server,Client,ServiceManager以及Binder驱动。其中Server,Client,ServiceManager运行于用户空间,驱动运行于内核空间。Binder驱动程序提供设备文件/dev/binder与用户空转载 2017-06-22 09:28:29 · 167 阅读 · 0 评论 -
Asynctask源码分析
AsyncTask首先从Android3.0开始,系统要求网络访问必须在子线程中进行,否则网络访问将会失败并抛出NetworkOnMainThreadException这个异常,这样做是为了避免主线程由于耗时操作所阻塞从而出现ANR现象。AsyncTask封装了线程池和Handler。AsyncTask有两个线程池:SerialExecutor和THREAD_POOL_EXECUTOR。前者是用于任转载 2017-06-22 09:28:06 · 213 阅读 · 0 评论 -
Android Touch 事件的分发和消费机制
本文改自转载: Android 中与 Touch 事件相关的方法包括: dispatchTouchEvent(MotionEvent ev)、 onInterceptTouchEvent(MotionEvent ev)、 onTouchEvent(MotionEvent ev); 能够响应这些方法的控件包括:ViewGroup 及其子类、Activity。方法与控件的对应关系如下表所示...原创 2019-06-28 15:12:21 · 544 阅读 · 0 评论 -
LearningNotes
LearningNotes第一部分: Android(安卓)Android基础知识 Android内存泄漏总结 Handler内存泄漏分析及解决 Handler、Looper、Message、MessageQueue基础流程分析 Android性能优化 ListView详解 RecyclerView和ListView的异同 AsyncTask源码分析 插件化技术 自定义控件 事件分发机制 ANR问题转载 2017-06-22 09:09:15 · 623 阅读 · 0 评论 -
Activity启动过程
Activity启动过程一些基本的概念 ActivityManagerServices,简称AMS,服务端对象,负责系统中所有Activity的生命周期 ActivityThread,App的真正入口。当开启App之后,会调用main()开始运行,开启消息循环队列,这就是传说中的UI线程或者叫主线程。与ActivityManagerServices配合,一起完成Activity的管理工作 Appli转载 2017-06-22 09:13:01 · 223 阅读 · 0 评论 -
AIDL
AIDL 创建一个接口,再里面定义方法 package com.example.taidl; interface ICalcAIDL { int add(int x , int y); int min(int x , int y ); } build一下gen目录下会生成ICalcAIDL.java文件 /* * This file转载 2017-06-22 09:15:02 · 160 阅读 · 0 评论 -
Android关于OOM的解决方案
Android关于OOM的解决方案OOM 内存溢出(Out Of Memory) 也就是说内存占有量超过了VM所分配的最大 出现OOM的原因 加载对象过大 相应资源过多,来不及释放 如何解决 在内存引用上做些处理,常用的有软引用、强化引用、弱引用 在内存中加载图片时直接在内存中作处理,如边界压缩 动态回收内存 优化Dalvik虚拟机的堆内存分配 自定义堆内存大小转载 2017-06-22 09:16:52 · 194 阅读 · 0 评论 -
Android基础知识
Android:五种布局: FrameLayout 、 LinearLayout 、 AbsoluteLayout 、 RelativeLayout 、 TableLayout 全都继承自ViewGroup,各自特点及绘制效率对比。 FrameLayout(框架布局)此布局是五种布局中最简单的布局,Android中并没有对child view的摆布进行控制,这个布局中所有的控件都会默认出现在视图的左原创 2017-06-22 09:18:39 · 253 阅读 · 0 评论 -
Android几种进程
Android几种进程 前台进程:即与用户正在交互的Activity或者Activity用到的Service等,如果系统内存不足时前台进程是最后被杀死的 可见进程:可以是处于暂停状态(onPause)的Activity或者绑定在其上的Service,即被用户可见,但由于失去了焦点而不能与用户交互 服务进程:其中运行着使用startService方法启动的Service,虽然不被用户可见,但是却是用户原创 2017-06-22 09:19:14 · 237 阅读 · 0 评论 -
Android开机过程
Android开机过程 BootLoder引导,然后加载Linux内核. 0号进程init启动.加载init.rc配置文件,配置文件有个命令启动了zygote进程 zygote开始fork出SystemServer进程 SystemServer加载各种JNI库,然后init1,init2方法,init2方法中开启了新线程ServerThread. 在SystemServer中会创建一个socket客原创 2017-06-22 09:19:41 · 210 阅读 · 0 评论 -
Android图片中的三级缓存
Android图片中的三级缓存为什么要使用三级缓存 如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了 假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的状况下,对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响 特别是,当我们想要重复浏览一些图片时,如果每一次浏览都需要通过网络获取,流量的浪费可想而知 所以提转载 2017-06-22 09:22:05 · 218 阅读 · 0 评论 -
Android系统机制
Android系统机制APP启动过程 Launcher线程捕获onclick的点击事件,调用Launcher.startActivitySafely,进一步调用Launcher.startActivity,最后调用父类Activity的startActivity。 Activity和ActivityManagerService交互,引入Instrumentation,将启动请求交给Instrumen转载 2017-06-22 09:24:45 · 282 阅读 · 0 评论 -
Android性能优化
Android性能优化合理管理内存节制的使用Service如果应用程序需要使用Service来执行后台任务的话,只有当任务正在执行的时候才应该让Service运行起来。当启动一个Service时,系统会倾向于将这个Service所依赖的进程进行保留,系统可以在LRUcache当中缓存的进程数量也会减少,导致切换程序的时候耗费更多性能。我们可以使用IntentService,当后台任务执行结束后会自动转载 2017-06-22 09:25:50 · 237 阅读 · 0 评论 -
ANR问题
ANR1、ANR排错一般有三种类型 KeyDispatchTimeout(5 seconds) –主要是类型按键或触摸事件在特定时间内无响应 BroadcastTimeout(10 seconds) –BroadcastReceiver在特定时间内无法处理完成 ServiceTimeout(20 secends) –小概率事件 Service在特定的时间内无法处理完成 2、哪些操作会导致ANR 在转载 2017-06-22 09:27:13 · 262 阅读 · 0 评论 -
APP启动过程
APP启动过程 上图就可以很好的说明App启动的过程 ActivityManagerService组织回退栈时以ActivityRecord为基本单位,所有的ActivityRecord放在同一个ArrayList里,可以将mHistory看作一个栈对象,索引0所指的对象位于栈底,索引mHistory.size()-1所指的对象位于栈顶 Zygote进程孵化出新的应用进程后,会执行ActivityT原创 2017-06-22 09:27:31 · 184 阅读 · 0 评论 -
Art和Dalvik区别
ART和Dalvik区别Art上应用启动快,运行快,但是耗费更多存储空间,安装时间长,总的来说ART的功效就是”空间换时间”。ART: Ahead of Time Dalvik: Just in Time什么是Dalvik:Dalvik是Google公司自己设计用于Android平台的Java虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一,它可以原创 2017-06-22 09:27:47 · 227 阅读 · 0 评论