- 博客(208)
- 资源 (3)
- 收藏
- 关注
原创 详解TCP协议的服务特点以及连接建立与终止的过程(俗称三次握手四次挥手)
tcp/ip技术常常会在我们面试的时候出现,很多公司也要求需要掌握tcp/ip,socket等,所以掌握这项技术会为我们面试的时候加分。好,今天我就简单的介绍一下tcp技术:首先说一下tcp位于运输层,现在网络被分为了5层,由上往下说:应用层,运输层,网络层,链路层,物理层。应用层:就是我们使用的http技术或者ftp协议包装了我们要传输的数据。运输层:它会将应用层的数据包
2016-03-02 17:22:41 2150
原创 Android远程服务与本地服务的特点以及功能差异
最近又重新看了点IPC的相关知识,以前看过不少Binder的知识,看到c++层思路就很模糊了,回头再看也算是一种学习。IPC全称为:interprocess communication内部进程间通信,官方地址:http://developer.android.com/intl/zh-cn/guide/components/aidl.html,网上对这一块介绍的资料也着实不少,入门的话还是推荐看
2016-02-23 18:54:05 5029
原创 由Actvity启动模式之SingleInstance引起的坑的反思
以前对于Activity的启动模式只限于文字说明理解的层面,但最近的一个问题让我对启动模式有了更深的了解。Activity有四大启动模式:standard,singleTop,singleTask,singleInstance,这些启动模式的特点就不在这里细说,主要说一下SingleInstance这种启动模式的Activity启动其它模式的Activity的效果与可能出现的问题:问题是这
2016-02-19 19:17:21 3088 2
原创 Python学习练习:批量移动文件
今天想往MP3下点音乐,但是满了,想把里面不喜欢的删了,但是音乐都在各个文件夹下,于是,我希望所有的音乐文件可以移动到一个层面,以供我按照音乐专辑的封面来挑选要删哪个,于是就想写个程序来做一下整理,想想用我擅长的Java来写吧,但是没什么意思,想到一直想学Python,何不拿Python练练手呢?于是:安装环境:2.5,3.4,2.7,我有3个版本,在练习的时候发现有些语法问题,我猜可能是版本
2016-01-21 19:49:49 4311
原创 IntentService解析
IntentService是一个专门用来处理异步线程的一个服务,它内部创建了一个消息队列以及一个Handler对象,其它组件将Intent发送过来之后,IntentService会将这个Intent通过消息队列发送到工作线程,所以,我们可以放心大胆的在IntentService内部做耗时操作,而不必单独开启线程。好,大概描述了下,我们看一下它的实现方式:package android.ap
2015-12-31 17:36:08 1252
原创 Android自定义控件入门实践之雷达扫描控件
以前因为工作的关系,对于自定义控件用的少之又少,无非就是把几个控件放置到ViewGroup内部,然后提供开放方法,就成了一个所谓的自定义控件,但是这种小伎俩太简单,面试的时候这点东西根本Hold不住场,所以工作之余还是得把这块补补,也好加深一下对控件的理解。好,啰嗦了挺多的,我们先看一下实现的效果:只是截取了一部分运行时图,这个控件只是重写了onDraw方法,其它一一保留给View
2015-12-30 11:12:05 2569
原创 记录对String.format(Formatter().format())方法的总结
String.format其实是调用的Formatter.format: public static String format(String format, Object... args) { return new Formatter().format(format, args).toString(); }第一个参数是格式化字符串,第二个参数是可变的被格式化
2015-12-24 18:25:57 3826
原创 解决AndroidStudio添加ProjectLibary后在编译时遇到的各种问题之解决方式索引(finished with non-zero exit value and so on...)
解决AndroidStudio添加ProjectLibary后在编译时遇到的各种问题之解决方式索引(finished with non-zero exit value and so on...)因为项目需要,我需要将一个外部工程作为Libary导入项目,起初导入还是比较简单的,但是在编译的时候就遇到了各种问题:Error:Execution failed for task ':app:
2015-12-15 13:22:07 52410 7
原创 Android中使用官方提供好的功能使用说明(比如系统图库获取),也作为延生学习的学习文档
这篇文章最核心的就是去学习如何学习Android,如何去使用Android文档。我们一般在刚开始接触开发的时候,如果遇到无法解决的问题,常常会百度,或者google去寻找答案,比如有个需求是获取系统中的图片,你可能会直接去搜索这个功能相关的码,如果需求再后来发生了变更,可能还回去网上找代码,万一你遇到的问题在网上找不到呢?我们还是拿获取系统图片这个需求来举例说明,我们不去网上根据关键词搜索
2015-11-23 14:49:32 2482
原创 Android NDK开发入门学习笔记(图文教程,极其详尽)
以前也简单用过JNI,但是只是简单用一下,好多都不明白。最近在看源码部分,有涉及到JNI调用的,所以这次打算彻底把它搞定。先普及一下JNI的调用关系:JAVA------------------------>JNI------------------------------->Native.我们需要从我们的入口代码写起,我们先来一段含有native函数的简单类:package
2015-11-19 11:59:04 2860
原创 MVP模式在Android中的应用之图片展示选择功能的框架设计
前言:虽然安卓出现的时间比其它平台软件比较晚,但是在我们的安卓开发中,一样可以使用我们所熟知的设计模式来给它一个合理、完善的结构,这样,才可以使我们在平常开发的时候减少冗余代码的发生,真正的提高效率。平常,我们可能会遇到这样的需求:在一个页面中用来展示图片或者文字(我们称之为"大湿胸"),而另一个页面除了和大湿胸长得一模一样之外,它还有一个功能是选择(我们称之为"二湿弟"),遇到这种情况你会怎么做呢?当类似于这样的情况在你的APP中有很多种怎么办呢?你会怎么选择?是一遍遍的拷贝粘贴,还是先静下来想想如何
2015-11-17 17:49:05 1376
原创 提供一个Android原生的Progress——SwipeToRefreshLayout下拉刷新时的等待动画
先来上个图看看效果:这里我为什么要单独把这个拿出来呢,因为最近才开始接触Android最新的东西,也就是5.0以上的东西,发现Android提供的SwipeToRefreshLayout是没有上拉加载更多的,在网上找了不少第三方提供加载更多的项目,大部分都还在使用以前ListView时候使用的那一套加载更多的效果,但是效果都不是很好,所以萌生了要把这部分单独抽出来的想法。
2015-11-13 19:42:38 2728 1
原创 MVP模式在Android中的应用(附UML高清大图,使用RecyclerView举例)
MVP 在Android中的应用,用RecyclerView举例
2015-11-12 17:48:41 3095
原创 (设计模式)简单工厂模式之通过配置文件动态创建实现类
通常我们在使用简单工厂模式的时候会由创建方法create通过传入的参数来判断要实例化哪个对象,就像下面这样: public static class ImageSelectFactory { public static IImageSelect createIImageSelect(ImageSelectClientMode mode) { IIm
2015-11-04 14:44:29 3714
原创 JAVA1.6实现动态编译加载运行
一直以为我们写好的程序都需要预先编译好,然后再运行,直到今天在看书的时候才看到书上说JAVA1.6之后可以动态的编译JAVA文件,这着实让我高兴了一把,为什么这么兴奋呢,我一心想着能用技术实现动态更新APK,不用一次次的发布打包,有了动态加载,可以说是成功了一大截。于是赶紧试试:package com.sahadev;import java.io.IOException;import j
2015-11-03 17:43:50 904
转载 推荐几个Android开发非常有用的工具(for android studio)
原文地址:http://stormzhang.com/android/2015/05/26/android-tools/一晃好久没更新博客了,最近一个月真的很忙,因为公司在准备C轮融资,公司的发展到了一个关键的阶段,自己全部精力投入在公司产品上,这个状态可能还会持续一段时间,今天忙中抽闲来给大家分享下我们最近在项目中采用到的一些能帮助团队提升工作效率的几个Android Stu
2015-10-28 17:21:05 1588
原创 设计模式之观察者模式在Listview中的应用
有时候我们会有这么一个需求,在Listview的某个Item上有个按钮,点击这个按钮之后呢,需要对其它的item做一些操作,就像下面这个:采纳按钮点击之前:采纳按钮点击之后:简单介绍一下这两张图的意思:模拟了一个Listview,在每个Item上都有一个“采纳”按钮,当点击其中一个“采纳”之后,需要将其它“采纳”按钮隐藏,并且自身需要改为“已采纳”,如后面的图所示。我们有一种简
2015-10-28 10:43:31 1529 5
原创 从源码说说dispatchTouchEvent与onTouchEvent的关系以及OnTouchListener的用法
为什么要说这个问题呢,这段时间还是在SeekBar上遇到一些问题,好像ADT并没有给seekBar在xml中提供enabled属性,虽然我们可以在代码中设置,但是它并不能实现下面这个需求,所以我们需要找到别的方式去实现它,也为了能更好的了解一下dispatchTouchEvent与onTouchEvent之间的关系。我们现在有这么一个问题,我们需要使SeekBar在某些时候只可点击不可拖动,如
2015-10-26 21:31:53 1792 1
原创 Android控件默认风格解析之SeekBar
在我们开发的时候常常需要更改原生控件的默认效果,有时候某些控件改起来挺费劲的,比如SeekBar的背景与其ProgressBar的进度粗细或者thumb居中现实与否如果弄错,都是个大麻烦,我曾经就为thumb的居中显示问题浪费了很多很多的时间,后来以别的笨拙的办法解决了,现在重新回来看,决定下决心整一下,看看到底是怎么回事。我们知道,当我们在写一个xml布局的时候,只需要简单的为这个控件指定一
2015-10-23 18:01:39 6170 2
转载 MultiDex
原文转自:http://coolpers.github.io/multidex/2015/04/13/multidex.html1.MultiDex的产生背景当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。DexOpt的执行过程是在第一次加载Dex文件的时候执行的。这个过程会生成一个ODEX文件,即Optim
2015-10-22 16:39:59 1194
原创 福利!Android官方网站出现中文版本!
这两天在Android开发者网站上查东西的时候发现有中文的搜索结果,点开结果全是中文的,以后可以畅通无阻的看文档了,快来围观。
2015-10-22 15:22:16 1982
原创 (Android开发辅助工具)动态广播注册解注工具
平常我们开发的时候需要使用到动态注册广播,如果在一个类内注册很多的广播代码就会既冗余又乱糟糟的,就像这样: msgReceiver = new NewMessageBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(EMChatManager.getInstance().getNewMessageBroa
2015-10-22 12:39:19 1228
原创 Android如何给无法更改继承关系的Activity更换ActionBar(setContentView方法实战)
前言:通常我们有时候会直接使用ADT工具直接新建一个Activity页,而这个Activity我们又无法更改它的父类,那遇到这种情况该如何处理呢?其实很简单,好,看如何来解决这个问题:先来看看这个问题出现的情况,我们以SettingsActivity举例:上图是SettingActivity的继承关系,在PreferenceActivity的内部被引用了一些internal包内
2015-10-21 18:20:33 1967 1
原创 从源码的角度说说Activity的setContentView的原理(二)
前文http://blog.csdn.net/sahadev_/article/details/49072045虽然讲解了LayoutInflate的整个过程,但是其中很多地方是不准确不充分的,这一节就详细讲一下我们上一节遗留的细节问题,我们遗留的问题有这些:1.在PhoneWindow的setContentView里我们看到了一个mLayoutInflater对象,我们还没清楚它从哪来?
2015-10-12 17:53:18 981
原创 从源码的角度说说Activity的setContentView的原理
我们在Activity开发的时候天天会用到这个方法,有时候还需要根据需求在setContentView调用的时候做一些动作,因此我们就需要知道它内部是如何工作的,我们来一起看一下:setContentView有三个重载方法: public void setContentView(int layoutResID) { getWindow().setContentView
2015-10-12 15:14:51 1115
原创 从源码角度分析Android系统的异常捕获机制是如何运行的
我们在开发的时候经常会遇到各种异常,当程序遇到异常,便会将异常信息抛到LogCat中,那这个过程是怎么实现的呢?我们以一个例子开始:import android.app.Activity;import android.os.Bundle;public class MainActivity4 extends Activity { @Override protected v
2015-10-10 17:54:28 1855
转载 HTTPS请求实现框架
HTTPS主要用于安全传输数据,从代码的角度来看,HTTPS主要使用了X509的方式进行了加密,至于密钥(证书)在什么地方,可能在购买HTTPS服务的时候被统一放置在DNS服务器之类的地方了吧(纯推测,具体可以查阅相关资料),附购买SSL证书的地址:http://jingyan.baidu.com/article/6766299740dbdd54d41b8456.html
2015-09-29 11:21:03 1064
原创 以RSA的方式实现非对称加密
package com.sahadev;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;import java
2015-09-29 01:20:56 2070
原创 以DH的方式实现非对称加密
package com.sahadev;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;import java
2015-09-28 01:16:30 1228
原创 以DES的方式实现对称加密,并提供密钥
注释都在代码里了,干了:import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import javax.xml.bind.annotation.adapters.HexBinaryAd
2015-09-27 21:57:22 5706
原创 消息摘要算法HmacMD5的实现
MAC provides the functionality of a "Message Authentication Code" (MAC) algorithm. A MAC provides a way to check the integrity of information transmitted over or stored in an unreliable medium, based on a secret key. Typically, message authentication code
2015-09-27 11:27:28 1655
原创 android中如何使用一张图片适配不同尺寸的APP引导页
在我们平常开发的过程中在做引导页适配的时候,有时候会犯难,怎么样作图可以将各种不同尺寸分辨率的手机都适配好也就是不变形不拉伸,官方给的说法也只是做多套图去适配不同的分辨率,遇到全屏展示引导这种问题的时候就有些力不从心了。接下来我们就展示一下如何使用一张图来适配市面上的绝大部分手机:这个办法是反编译微信得出的想法,微信的包里面只有一张1920*1080的图,我们观察了微信在不同尺寸手机上的展示效
2015-09-15 22:32:53 43803 22
原创 如何下载Android源码(非常详细,含自动恢复下载,编译,运行模拟器说明)
今天终于把代码下载完成,特此开一篇博文记录一下。上图:为了下载这些源码,历时5天5夜,说为什么这么长时间,是因为太容易中断了,有时候下一晚上可能就一直没在下,在你入睡的时候它就自己断了,趁着这个周末有时间一直在电脑旁白看着它下完,中途也是挺曲折的,磁盘空间不够用了(我的是40个G,不够用),各种折腾,最后才把30多个G的代码及临时文件移动到其它磁盘(Windows下使用的普通磁盘),继
2015-09-14 15:21:41 4457
原创 在Activity启动过程中如何任务栈的栈顶是否是将要启动的Activity的实例
我们在ActivityStack类中可以看到某个方法用于返回当前任务栈顶端的ActivityRecord对象,如果栈是空的,就返回null,ActivityRecord用于代表在历史任务栈中的一个Activity对象的信息。 /** * Returns the top activity in any existing task matching the given
2015-09-09 18:27:40 1534
原创 Android中动态的更改selector中某张图片的属性
在我们平常开发的时候会有许多状态按钮,比如state_pressed,android:state_checked,或者就正常状态等等,我们做这样的效果通常需要三个文件,一张是按下的图片,一张是正常状态的图片,一张是管理它们的selector文件,如果在不断更新迭代的过程中出现了很多这样的按钮,而且它们的颜色什么的都不一样,那我们的res/drawable文件夹下就会出现很多个这样的组合文件,导致我
2015-09-08 15:16:13 7097 5
原创 Android中如何查看在res中存放的drawable文件对应的JAVA类型是什么呢
有些时候需要将res中的资源文件加载进来然后做一些修改,然后再赋值给控件使用,比如这样:Drawable drawable = getResources().getDrawable(int id);现在我需要把资源文件id所对应的Drawable对象加载进来,然后做向下转型处理,如果我不调试查看本身的类型的话,该怎么知道它到底是哪种类型呢?我们来通过源代码查看究竟:首先我们找到getResou
2015-09-07 17:30:34 1631
原创 如何查看Activity任务栈以及dumpsys_activity命令的简要使用及介绍
今天看到淘宝客户端的某个页面效果,效果是在两个Activity中做动画,为了知道究竟是不是在同一个Activity中做的效果,就必须采取一种手段来知道是不是同一个Activity.有两种实现方式:第一种:自己手动写一个程序,通过系统提供的函数来打印任务栈顶的Activity名称来判断是否是同一个Activity:如下:List runningTasks = mActivityMan
2015-09-06 17:28:06 7280
MVP模式在Android中的应用之图片展示选择功能的框架设计
2015-11-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人