- 博客(32)
- 收藏
- 关注
原创 (原创)悟空天气------Android源码下载地址,代码结构与解析,附App截图
自己写的开源天气类应用---悟空天气,具有选择城市,城市定位,pm值显示,无网络数据缓存,天气预报,桌面widget等功能。
2016-02-22 09:38:01 2165
原创 内存泄漏分析工具---MAT使用总结(结合Android Studio)
前言MAT全称Eclipse Memory Analyzer,网上介绍一堆,简单说就是强大的内存泄漏分析工具
2016-07-31 21:34:12 862
原创 Android性能优化总结
前言性能优化中一个很重要的问题是内存泄漏,内存泄漏不会导致程序功能异常,但是它会导致Android程序的内存占用过大,这将提高内存溢出的发生机率。
2016-06-30 20:06:02 408
原创 手机推送服务设计----原创
推送服务设计,在各个手机端应用都需要一定的云控制能力,可以在某些情况下云端发送各种数据或者命令到手机端,例如发送一个强制升级的命令或者手机app配置变换的数据包,以及发送一个信息给特定人群(某个地区)。 请设计一个以长连接为主的云端控制服务,为了聚焦主要问题,可以忽略掉手机网络(例如:2g网络),手机终端等因素,用户登录的要求。
2016-04-21 11:38:58 1048
原创 报错:Attribute ”rippleColor“ has already been defined”(纯手打,已解决)
解决support.design和MaterialDesignLibrary库文件发生冲突的问题
2016-02-15 17:15:33 2301
原创 LayoutInflater.inflate方法解析
LayoutInflater.inflate方法应该是Android程序员最常使用的方法之一了,但是如果使用不当,你会碰见很多的坑。。。今天我就碰到了一个,我找到了解决方法,也打算把它记下来。。。
2016-01-18 16:53:44 342
原创 Activity启动模式与FLAG及TaskAffinity
相信初学者在写自己的Demo或者是APP时会遇到这样的情况:当点击一个按钮启动另外一个Activity时,当点击速度非常快的时候,会发现第二个Activity会重复启动多次,当点击返回按钮时,返回的是仍是第二个Activity,这就涉及到了本文所探讨的Activity的启动模式LaunchMode和FLAG。
2016-01-11 19:05:46 386
原创 Activity的启动模式LaunchMode与FLAG标志
相信初学者在写自己的Demo或者是APP时会遇到这样的情况:当点击一个按钮启动另外一个Activity时,当点击速度非常快的时候,会发现第二个Activity会重复启动多次,当点击返回按钮时,返回的是仍是第二个Activity,这就涉及到了本文所探讨的Activity的启动模式LaunchMode和FLAG。#Activity启动模式##标准模式standard系统默认的启动模式,谁启
2016-01-11 18:50:59 122
原创 View调用scrollTo()、scrollBy()的理解及使用(移动内容而非位置)
MainActivity如下:package cc.uu;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import andr
2016-01-07 17:02:31 911
转载 Android属性allowBackup安全风险浅析
1.allowBackup安全风险描述Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifest.xml文件中的allowBackup属性值[1] ,其属性值默认是True。当allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用
2016-01-05 16:22:31 278
转载 ANDROID自定义视图——onMeasure流程,MeasureSpec详解
简介:在自定义view的时候,其实很简单,只需要知道3步骤:1.测量——onMeasure():决定View的大小2.布局——onLayout():决定View在ViewGroup中的位置3.绘制——onDraw():如何绘制这个View。而第3步的onDraw系统已经封装的很好了,基本不用我们来操心,只需要专注到1,2两个步骤就中好了。而这篇文
2015-12-29 17:21:04 331 1
原创 使用Ultra-Pull-To-Refresh下拉刷新时解决与嵌套的viewpager触摸滑动冲突的问题
同样是在做的天气app中,使用了开源的Ultra-Pull-To-Refresh下拉刷新控件,由于在项目中有一个viewpager负责显示之后5天的天气预报,但加入Ultra-Pull-To-Refresh时产生了一个问题,就是viewpager左右滑动时非常的难,使用下面的代码可以解决问题:1、自定义viewpagerpackage com.myzaker.autoinsuran
2015-12-15 17:32:10 3251 2
原创 android Viewpager取消预加载
1.在使用ViewPager嵌套Fragment的时候,由于VIewPager的几个Adapter的设置来说,都会有一定的预加载。通过设置setOffscreenPageLimit(int number) 来设置预加载的数量,在V4包中,默认的预加载是1,即使你设置为0,也是不起作用的,设置的只能是大于1才会有效果的。2.限制预加载,会出现滑动过程中卡顿现象。其实Fragment中防止预加
2015-12-13 21:41:07 2566
原创 viewpager+fragment(初始化时需要注意的几点问题)
最近在做一款关于天气预报的app,已经做出一半了,先放张半成品截图吧可以看出大体使用了viewpager|+fragment这种框架,这里选择的的适配器是FragmentStatePagerAdapter,除了这个之外还有一种适配器FragmentPagerAdapter,下面先简单介绍下这两种适配器的不同点:使用FragmentPagerAdapter 时,Fragment对象会一
2015-12-13 20:43:52 2469
转载 Android访问网络,使用HttpURLConnection还是HttpClient?
最近在研究Volley框架的源码,发现它在HTTP请求的使用上比较有意思,在Android 2.3及以上版本,使用的是HttpURLConnection,而在Android 2.2及以下版本,使用的是HttpClient。我也比较好奇这么使用的原因,于是专门找到了一位Google的工程师写的一篇博客,文中对HttpURLConnection和HttpClient进行了对比,下面我就给大家简要地翻译
2015-11-27 12:08:45 249
转载 从通信的角度分析一下微信推送的长连接的弊端
网易那场面试整体水平很高,也让我知道如何去准备android方面的面试印象比较深的就是这个问题 从通信的角度分析一下微信推送的长连接的弊端 这个问题把通信跟android网络很好地结合在一起,查了一下资料发现为了这个问题当年腾讯还跟运行商发生了摩擦首先了解一下信令风暴信令风暴:网络受到终端信令的请求超过了网络各项信令处理的能力,引发拥塞甚至雪崩效应,导致网络不可用,我们称
2015-11-27 10:21:28 1869
转载 TCP三次握手详解及释放连接过程
TCP头部: 其中 ACK SYN 序号 这三个部分在以下会用到,它们的介绍也在下面。暂时需要的信息有:ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SY
2015-11-12 10:54:39 553
原创 关于强转指针和重构类型的一道c++代码
请写出以下程序的运行结果,并解释导致这样运行结果的关键性原因#include using std::cout;class P{ public: virtual void print() { cout << "P"; }};class Q: public P{ public: virtual void print()
2015-11-11 09:21:07 269
原创 有一个一亿节点的树,现在已知两个点,找这两个点的共同的祖先
一种思路是建一个Hash,从2个节点向父节点走,你一步我一步,把经过的节点加入Hash,如果发现某节点已经在里面了,则该节点为公共祖先。此方法的不足之处在于使用Hash,空间占用较大。另一种方法是先从2个节点向根节点走一遍,统计出两个节点的深度(d1,d2,设d1 > d2),然后再走一遍,先走深度较深的那个节点,对应点1,一直走到点1同点2的深度相同,再一起走,然后只需要检测每一个的父节点是
2015-11-10 08:59:32 390
原创 关于内存对齐的那些事
什么是内存对齐假设我们同时声明两个变量:char a;short b;用&(取地址符号)观察变量a,b的地址的话,我们会发现(以16位CPU为例):如果a的地址是0x0000,那么b的地址将会是0x0002或者是0x0004。那么就出现这样一个问题:0x0001这个地址没有被使用,那它干什么去了? 答案就是它确实没被使用。 因为CPU
2015-11-09 22:14:21 228
转载 Java中有关Null的9件事
对于Java程序员来说,null是令人头痛的东西。时常会受到空指针异常(NPE)的骚扰。连Java的发明者都承认这是他的一项巨大失误。Java为什么要保留null呢?null出现有一段时间了,并且我认为Java发明者知道null与它解决的问题相比带来了更多的麻烦,但是null仍然陪伴着Java。我越发感到惊奇,因为java的设计原理是为了简化事情,那就是为什么没有浪费时间在指针、操作符重载
2015-11-04 14:56:36 328
原创 【Android】getwidth和getmeasuredwidth的区别以及两者的使用场景
首先,看getWidth()的官方说明:public final int getWidth ()Added in API level 1Return the width of the your view.ReturnsThe width of your view, in pixels.返回view的宽度,说的不详细,再看get
2015-11-03 16:59:32 309
原创 进程的三种基本状态与切换
进程执行时间的间断性决定了进程可能具有多种状态,事实上,运行上的进程可能有以下三种状态。1)就绪状态当进程已分配到除了CPU以外的所有必要资源后,只要再获得CPU,便可以立即执行,进程的这时的状态称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将他们排成一个队列,称为就绪队列。2)执行状态进程获得CPU资源,其程序正在执行,在单片机系统中,只有一个进程处于执行状态,在多
2015-10-27 10:31:33 810
原创 进程的三种基本状态与切换
进程执行时间的间断性决定了进程可能具有多种状态,事实上,运行上的进程可能有以下三种状态。1)就绪状态当进程已分配到除了CPU以外的所有必要资源后,只要再获得CPU,便可以立即执行,进程的这时的状态称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将他们排成一个队列,称为就绪队列。2)执行状态进程获得CPU资源,其程序正在执行,在单片机系统中,只有一个进程处于执行状态,在多
2015-10-27 10:10:06 127
原创 java无参构造函数的意义
创建一个子类对象的实例的时候,必先调用父类的无参构造函数(默认构造函数),假如父类有带参数的构造函数,那么系统不会给他创建无参数的构造函数,这时,子类在实例化的时候,因为找不到父类的默认构造函数,编译器会报错,如果在子类的构造函数中指定使用父类的带参数的构造函数的时候,或者在父类中加一个无参数的构造函数的时候,就不会报错了。我们假设A是B的父类,B是A的子类。1、如果没有给A类没有
2015-10-26 17:36:30 936
原创 不同网段的ip地址汇总(汇总网段)
1)为什么要进行IP地址汇总 在子网划分以后,如果需要网络通信需要配置路由,如果每个子网都配置一条路由是十分繁琐并容易出错的,所以可以将连续的子网合成一个网段这就是地址汇总。2)理解IP汇总的匹配原则 路由匹配原则:即匹配路由表时,是逐条进行匹配,然后选择子网掩码最长(最明细的路由)的路由条目进行转发。3) 地址汇总的计算方法 1.确定需要汇总的网段的子网地址。
2015-10-23 10:38:22 5744
转载 使用(x&y) + ((x^y)>>1) 求平均数
在一个面试题里见到这么一道题:下面的代码:int func (int x, int y){ return (x&y) + ((x^y)>>1);}当 x 为 729,y 为 271 时函数的返回值是多少?思路最简单也最直接的就是将 x 和 y 都先转换为二进制,然后老老实实的做按位与,按位异或等运算,最后得出结果。在分析该表达式的实现思路之前,首
2015-09-24 21:28:19 293
原创 Looper、Handler、MessageQueue在ActivityThread中的源码剖析(原创)
最近阅读深入理解android内核设计思想这本书,第一次接触android内核源码,看着是既枯燥又枯燥,当然看源码要从ui主线程看起,这里剖析下ActivityThread中looper、handler、message在里面的关系。这里在source insight进入ActivityThread的void main方法中:public static void main(String[]
2015-09-24 17:56:40 362
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人