- 博客(16)
- 收藏
- 关注
原创 从桌面图标启动一个LauncherMode为标准模式的主activity为什么不会重复创建多个实例
一般我们主activity是能显示在桌面图标上的程序入口,并且默认情况launchMode是standard模式。一般我们使用startActivity的时候,如果启动目标activity是standard模式的话,每启动一起就会创建目前activity的实例,也就是说同一个task栈中会出现多个目标activity。但是为什么我们的launcher应用点击一个应用图标的时候,为什么不会创
2017-07-27 12:40:14 1369
原创 并发容器
1、CopyOnWrite容器:写时复制,也就是说当我们在容器里面增加元素的时候,会拷贝一份当前容器的元素生成一个新的容器,然后往这个新容器中添加新元素,之后再把这个新容器赋值给旧容器,也就是说原来的容器指向了这个多出一个元素的容器。从CopyOnWriteArrayList的add方法中可以看出:private transient volatile Object[] elements;
2017-07-26 17:09:07 257
转载 PathEffect,使用mPaint.setPathEffect为path路径设置不同的效果
转载自:http://www.cnblogs.com/tianzhijiexian/p/4297783.html当我们的画布canvas使用了drawPath的时候,为画笔mPaint设置PathEffect可以作用于path产生不同的效果。mPaint.setPathEffect(new CornerPathEffect(50));//路径转角变圆滑mPaint.se
2017-07-25 15:58:50 1033
原创 自定义View中,四个参数的构造函数,其最后两个参数的含义
先看两个参数的构造函数:public View(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); }public View(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
2017-07-25 11:59:41 3172
原创 自定义View时,wrap_content属性对测量的影响
很多资料都显示,自定义view的一般步骤是:1、重写onMeasure(int widthMeasureSpec, int heightMeasureSpec),在该方法里面实现自己大小的设置和对子view大小的测量(针对ViewGroup)2、重写onLayout( boolean changed, int left, int top, int right, int bottom),在该
2017-07-24 17:51:31 1282
原创 从源码看滴滴插件化框架VirtualApk
滴滴开源插件框架地址:https://github.com/didi/VirtualAPK大神鸿洋的框架分析:http://blog.csdn.net/lmj623565791/article/details/75000580框架接入:http://www.jianshu.com/p/013510c19391本人比较渣,在阅读源码后做一个比较简单的记录,方便后期查看。先看看
2017-07-20 21:50:19 4672
转载 Service的完全详解
此篇文章比较详细的讲解了Service的各种用法,值得一看:http://blog.csdn.net/javazejian/article/details/52709857主要内容有:Service在清单文件中的声明Service启动服务实现方式及其详解Service绑定服务的三种实现方式关于启动服务与绑定服务间的转换问题前台服务以及通知发送服务Service与线程Thread的区
2017-07-20 17:11:24 561
原创 Android多进程全总结
分享一篇多进程文章,简单介绍了多进程的各种实现方法。其中详细讲解了AIDL方式的跨进程通信:链接地址:11权限验证就算是公交车,上车也得嘀卡对不,如果希望我们的服务进程不想像公交车一样谁想上就上,那么我们可以加入权限验证。服务端检查权限的方法:12根据不同进程,做不同的初始化工作
2017-07-20 12:29:22 481 1
转载 一个故事让你彻底搞懂Https
文章出处:微信号 JANiubility1 序言今天来聊一聊https 安全传输的原理。在开始之前,我们来虚构两个人物, 一个是位于中国的张大胖(怎么又是你?!), 还有一个是位于米国的Bill (怎么还是你?!)。这俩哥们隔着千山万水,通过网络联系上了, 两个人臭味相投,聊得火热。此时正值米国大选, 张大胖亲切地“致电
2017-07-19 12:52:05 762
转载 跨进程通信中AIDL文件的理解
Activity想要和远程Service进行通信,需要借助Binder驱动进行。Binder驱动提供的IBinder接口。Activity端要传递数据的时候,从服务端获取IBinder对象,并调用transact(IBinder接口)方法,该方法里面传入了parcel类型的对象数据,transact方法把该数据按照一定的顺序写入。Service端接收到消息后,回调Binder(实现了IBi
2017-07-18 11:24:00 285
原创 源码中出现throw new RuntimeException("Stub!")的理解
在阅读源码的过程中,发现有些类只定义了方法名和参数列表,里面具体的实现就一句话:throw new RuntimeException("Stub!");比如BaseDexClassLoader这个类://// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decomp
2017-07-17 21:12:34 27750 3
原创 Android Studio中使用git
转自:AndroidStudio中使用Git-初级篇(一)——从github上传和下载项目AndroidStudio中使用Git-高级篇(二)——新建分支(branch)和拉取请求(Pull request)上面两篇文章基本上说的比较清楚了。这里清理一下git branch面板中的命令的作用:刚开始我们从远程(比如说github)上克隆一个工程(每个工程都是以分支的形式存在的)
2017-07-17 14:39:12 3143
转载 贝塞尔曲线实例讲解
主要用到了android提供的Path类(Path),该类提供了二阶、三阶贝塞尔曲线的绘制方法。直接调用即可。二阶贝塞尔曲线,需要一个起点,一个终点,一个控制点,使用path.quadTo方法,然后通过canvas去绘制:path.moveTo(起点x,起点y);path.quadTo(控制点x,控制点y,终点x,终点y);canvas.drawPath(path,paint);
2017-07-14 12:05:02 1095
原创 Android按back键不退出当前Activity
一般默认情况下,我们按back键的时候,会执行Activity的onDestroy方法,销毁当前实例。有些情况下,不想销毁,只是想切换到后台,即回到桌面程序。那么有两种方法可以设置,重写Activity的onBackPressed()方法,或是重写onKeyDown方法1、使用moveTaskToBack方法:重写onKeyDown@Override public boolea
2017-07-12 21:12:18 11912 3
原创 从源码角度看onSaveInstanceState和onRestoreInstanceState的调用时机
引言:前段时间面试被问到这么一个问题:onSaveInstanceState的调用时机?答:我说在按home键、锁屏(进入后台),配置文件发送改变的时候会去执行。问:他说,你确定?不是在内存不足的时候才回调吗?按Home键真的会执行吗?那如果回调了onSaveInstanceState,那么进入前台的时候我们是不是每次都要从回调onRestoreIntanceSate中取值?连
2017-07-11 16:32:53 806
原创 使用Path绘制图形,和绘制一条动画曲线(跟踪动画)
一般我们要绘制任意图形的话,需要用到Path类,该类提供了各种画图形的方法,通过连接各个点来形成一个个的路径。如下文章详细解释了如何使用其api方法,另外介绍了贝塞尔曲线的使用http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0309/2573.html重点记录一下几个重要的步骤,比如要画一个√:1、创建Path对
2017-07-04 20:41:43 2183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人