自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 资源 (3)
  • 收藏
  • 关注

原创 字符串常量池

出现以下情况才会操作字符串常量池1.String.intern()在jdk1.7以下,先看常量池中有没有存该字符串,没有的话,看堆中有没有该字符串,如果堆中有,会将堆中的字符串复制一份到常量池,然后返回常量池的引用。jdk1.7以上,先看常量池中有没有存该字符串,没有的话,看堆中有没有该字符串,如果堆中有,则将堆中的引用保存到常量池,然后返回常量池保存的引用。如果堆中没有,则直接在...

2019-07-16 18:02:30 284

原创 Android面试总结

1.相关书籍:java核心技术java并发编程java并发编程艺术深入理解java虚拟机设计模式之禅Android开发艺术探索2.View绘制相关Animation原理https://www.jianshu.com/p/48317612c164Android屏幕刷新机制https://www.cnblogs.com/dasusu/p/8311324...

2019-07-10 00:10:42 242

原创 设计模式-单例模式

主要记录一下双重锁方式,以及要注意的地方public class SingleInstance { private static volatile SingleInstance INSTANCE; private SingleInstance() { } public static SingleInstance getInstance() { if (INSTANCE == ...

2019-06-14 13:35:14 235

转载 Android性能优化篇:Android中如何避免创建不必要的对象

Android设备不像PC那样有着足够大的内存,而且单个App占用的内存实际上是比较小的。所以避免创建不必要的对象对于Android开发尤为重要。在编程开发中,内存的占用是我们经常要面对的现实,通常的内存调优的方向就是尽量减少内存的占用。这其中避免创建不必要的对象是一项重要的方面。Android设备不像PC那样有着足够大的内存,而且单个App占用的内存实际上是比较小的。所以避免创建不必要的对象对于...

2018-05-03 11:43:52 415

原创 Android AES加解密优化

package com.wangzhong.fortune.utils;import android.util.Base64;import com.wangzhong.fortune.GlobalConstants;import java.io.UnsupportedEncodingException;import java.nio.charset.Charset;import ...

2018-04-08 20:24:59 667

转载 App启动优化

背景近日在开发过程中,发现每次点击app从桌面启动都有一个在桌面明显的等待时间,机型越低端的越明显,冷启动优化看来已经势在必行,所以怒而一顿研究再解决之。话不多说先上优化前后效果图:买家秀(gif):淘宝秀(gif):Android App启动流程:俗话说要想优化好,流程不可少!关于android app启动的流程图如下:总结

2017-08-24 10:11:16 658

原创 Android好文收藏

Rxjava 最易懂教程:  http://blog.csdn.net/lzyzsd/article/details/41833541banner:  https://github.com/saiwu-bigkoo/Android-ConvenientBanner下拉刷新:https://github.com/Yalantis/Taurus开源项目:http://www.sohu.com/a/15...

2017-06-28 14:57:04 407

转载 https原理通俗了解

摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样。但是这并不代表HTTPS的真实设计过程。在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过程。我们先不了聊HTTP,HTTPS,我们先从一个聊天软件说起,我们要实现A能发一个hello消息给B:如果我们要实现这个聊天软件,本文只考虑安全性问题,要实现A发给B

2017-06-10 18:20:01 488

转载 volatile关键字解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来

2017-05-30 14:54:59 359

转载 Android性能优化系列之App启动优化

应用的启动速度缓慢是我们在开发过程中经常会遇到的问题,比如启动缓慢导致的黑屏,白屏问题,本篇博客就将介绍App启动优化的相关知识。1应用的启动方式通常来说,启动方式分为两种:冷启动和热启动。1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。2、热

2017-03-14 16:52:28 2052

转载 内存泄漏全解析

java的内存分配静态存储区:编译时就分配好,在程序整个运行期间都存在。它主要存放静态数据和常量;栈区:当方法执行时,会在栈区内存中创建方法体内部的局部变量,方法结束后自动释放内存;堆区:通常用来存放new出来的对象。由java垃圾回收期回收。四种引用类型的介绍强引用(StrongReference):JVM 宁可抛出 OOM ,也不会让 GC 回收

2017-03-01 10:43:50 778

原创 android-Ultra-Pull-To-Refresh嵌套ViewPager滑动冲突解决

在项目中首页使用了android-Ultra-Pull-To-Refresh组件实现下拉刷新,首页顶部是一个轮播的ViewPage,发现手动滑动ViewPage的时候非常困难。在框架主页的issues中也能看到这个问题,但是一直没有被解决。在android-Ultra-Pull-To-Refresh的源码托管ReadMe的末尾发现work with ViewPager: disableWh

2017-02-27 16:44:11 882

原创 Android性能优化-代码优化

任何java类,都将占用大约500字节的内存空间,创建一个实例大约消耗15字节的内存。以下是代码优化的一些建议:1.对常量使用static修饰符。2.使用静态方法,使用静态方法比普通方法提高15%左右的访问速度。3.减少不必要的成员变量,如果一个变量可以定义为局部变量,就不要定义为成员变量。4.减少不必要的对象,使用基础类型比对象更加节省内存,同时避免频繁的创建短作用域的变量。

2017-01-16 17:44:08 413

转载 Android性能优化-过渡绘制解决方案

1过渡绘制屏幕上某一像素点在一帧中被重复绘制多次,就是过渡绘制。 下图中多个卡片跌在一起,但是只有第一个卡片是完全可见的。背后的卡片只有部分可见。但是Android系统在绘制时会将下层的卡片进行绘制,接着再将上层的卡片进行绘制。但其实,下层卡片不可见的部分是不需要进行绘制的,只有可见部分才需要进行绘制。 依据过渡绘制的层度可以分成: 

2017-01-10 15:43:51 884

原创 SurfaceView学习

一.SurfaceView与View的区别1.View主要适用于主动刷新,SurfaceView更适用于被动刷新,特别是需要频繁刷新的情况2.View主要在主线程进行刷新,SurfaceView通常会通过一个子线程来进行页面的刷新3.View在绘制时没有采用双缓冲进制,SurfaceView在底层实现采用的双缓冲机制。

2016-12-16 10:37:51 416

原创 Android项目工具类

/** * @description 日志输出控制类 * @date 2015-06-19 */public class LogUtils { /** * 日志输出时的TAG */ private static String mTag = "tag"; /** * 用于记时的变量 */ private static

2016-09-12 11:48:26 483

转载 AndroidStudio下jni开发

首先是自己的各种版本,基本都是目前最新的:Android Studio 2.1.2,NDK 12.1,gradle 2.1.2。万万没想到,这是我踩最大的坑:文件夹命名不要带空格!1.给项目gradle.properties加上以下代码,表示要用NDK了:1android.useDeprecatedNdk=true2.在l

2016-08-10 16:53:52 623

原创 ViewPager+Fragment 延迟加载

代码很简单,自行观看。package com.guidepage.hui.guidepage;import android.os.Bundle;import android.os.Handler;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.

2016-05-17 17:02:50 511

原创 Android虚线绘制,图形硬件加速

问题:至于如何绘制虚线就不多说了,网上比比皆是,谈下这次开发碰到的问题:1.从Android3.0开始,Android 2D的绘制流程就设计为能够更好地支持硬件加速。使用GPU的View在Canvas上进行画的操作时都会使用硬件加速。但是这样当我们定义shape绘制虚线时候,会发现绘制的并不是虚线而是一条实现。当时搜了下解决办法,毫不犹豫直接在application属性上标记问

2016-05-10 11:36:42 2423

原创 Android MVP设计模式的最佳实现

相信大家看这篇文章的时候,应该都是积累了一定的Android实际项目开发经验的,大家一定都是这么经历过来的:所有的业务逻辑实现以及一些界面相关(Dialog,PopWindow....显示)还有网络请求的CallBack都放在Activity里面,从界面的初始化,数据加载,然后根据网络返回显示界面的不同内容,少则一个activity几百行代码,多则上千。我想如果稍微出点bug或者说需求做一些稍微的

2016-04-14 15:32:42 6821 4

转载 ndk-stack 使用(分析native代码stack)

简介:  ndk r6 版本之后开始提供该功能。作用:  ndk-stack可以把不认识的内存地址信息转换成可读的信息。比如,把下列内容I/DEBUG ( 31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** I/DEBUG ( 31): Build fing

2016-01-23 17:26:05 1019

转载 Android dex分包方案

当一个app的功能越来越复杂,代码量越来越多,也许有一天便会突然遇到下列现象:1. 生成的apk在2.3以前的机器无法安装,提示INSTALL_FAILED_DEXOPT2. 方法数量过多,编译时出错,提示:Conversion to Dalvik format failed:Unable to execute dex: method ID not in [0, 0xfff

2015-12-15 09:50:59 580

原创 PullToRefreshScrollView嵌套ListView时,下拉刷新ListView自动滑动到底部

PullToRefreshScrollView大家应该很熟悉,这个android的开源下拉刷新,上拉加载更多的开源框架。当PullToRefreshScrollView嵌套了ListView并且ListView上面还有其他控件时,由于我们处理了ListView数据无法完全显示的问题。解决如下:public static void setListViewHeightBasedOnChildren

2015-09-22 15:19:26 2179

原创 android 轮播图无限循环,自动播放

在Fragment中添加Handler: private static class BannerHandler extends Handler { @Override public void handleMessage(Message msg) { if (msg.what == MSG_SWITCH_PIC) { if (vpBanner != null) {

2015-09-08 16:17:41 3907

原创 从android相册获取所有图片的路径

在做从系统选择图片并获取到它们的路径时发现有些图片的uri.getScheme是“file”,有些图片的uri.getScheme是“content” 所有导致用uri.getPath并不能获取所有图片的路径,用如下代码解决:public static String getPath(Activity activity, Uri uri) { L.i("hui", "处理前的路径:" + u

2015-08-14 12:09:53 3480

原创 图片压缩,Base64编码后上传服务器

/** 将图片编码成Base64字符串*/public static String getPhotoBase64(PicRec pic) throws Exception {Bitmap bit = getBitmap(pic);String result = "";ByteArrayOutputStream bos = null;if (bit != null) {

2015-07-16 10:55:25 2225

原创 imageview显示优化,二级缓存,以及软引用。

package com.aguigu.l05_app.util;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.util.HashMap;im

2015-04-20 20:16:54 1450

原创 Tabhost中Activity绑定Service

在android中,一个Activity绑定一个Service组件我们一般用Context().bindService方法就可以,但是如果这个 Activity属于一个Tabhost的话就不行了,在网上查了一下,发现在Google Android Issue中有这个缺陷,缺陷详细信息在这里(Google Android Issue 2483),三楼的oliver给出了正解   Usin

2015-03-31 16:25:50 834

原创 ShapedPerference使用要注意的问题

这两天改同事拦截助手的bug可是改伤了,找了好久没找到错误原因,最终仔细想了想多进程共享数据的问题,终于找到问题,就是他在一个服务里面去读取配置文件,而设置文件是在一个activity里面,而他设置了那个Service所在的进程与Activity不在同一个进程,导致设置之后的数据和读取的数据不一致。SharedPreference最适合使用的地方就是保持配置信息,Android中专门有

2015-01-23 20:47:14 793

转载 Android项目为一个apk设置多个ICON图标和执行入口

Android开发中,一个工程对应一个AndroidManifest.xml文件,这个文件中包含有该项目的一些设置,如权限、SDk版Activity、Service信息等。一般而言,这个文件中会有且仅有一个application节点,这个节点表示这是一个应用程序,不管它下面还有多少子节点如Activity、Service等等。形象的说,就是这个项目生成的apk安装到Android设备后,应用程序列

2015-01-19 10:19:35 908

转载 由android:process引发的内存限制的问题

android:process定义activity运行所在的进程名称。一般情况下,应用的所有组件都运行在为应用创建的默认的进程中,该默认进程的名称应用包名称一致。通过定义元素的“process”属性可以为所有组件指定一个不同的默认进程。但是任意组件都可以重写默认进程,以便实现多进程操作。如果该属性指定名称以“:”开头,则一个新的专属于该应用的进程将会被创建。如果该进程名以小写字母开

2015-01-17 15:57:38 684

原创 popupwindow放置listview,并且使listview可以响应点击事件

最近在模仿微信的选择头像的功能,就是一个Popwindow里面是一个ListView,ListView是所有相册,用户点击里面的相册,那么那个相片展示的页面就会显示你选择的相册的相片。刚开始发现里面的ListView不能获取点击事件,插入如下代码解决popWinPlaylist.setFocusable(true); popWinPlaylist.update(); 随后发现p

2014-12-31 11:11:31 2761 2

原创 解决ImageView部分图片不能显示的问题(图片已经损坏)

有时候,我们可以检测到有些图片,比如QQ 微信,当我们选择修改头像的时候,对于那些已经损坏的图片,它们会提供一张替换的图。但是我们如何去判断读出来的图像是已经损坏的呢?用如下方法即可: BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = tru

2014-12-27 19:36:32 4900

原创 解决网络监听多次发送广播的问题

有时候我们需要写一个程序来监听网络的变化,以实现即时刷新的问题,比如微信或者QQ都有自动重连的功能。单纯的用广播接收和ConnectivityManager难以实现,因为每次我们切换g网和wifi或者启用一个网络,系统都会发送多次网络变化的广播,如果我们把业务逻辑放在广播接收器里面处理,就会不必要的调用多次。比如当我们启动wifi时,系统将发送多次广播,当我们判断是否有网络连接的时候,会多次判断有

2014-12-10 19:17:07 6240 1

原创 使用SQLiteOpenHelper需要注意的问题

今天刚开始使用SQLiteOpenHelper,就碰到了一堆问题,大都是表不存在,总结原因如下:SQLiteOpenHelper的onCreate的方法只会在建立数据库的时候调用一次,如果你所创建的数据库已经存在,那么该方法不会被执行。所以如果我们在创建数据库之后又对onCreate方法进行了修改,一定要记得把数据库删除了,不然修改的内容就不会执行了。

2014-12-04 21:46:02 1001 2

转载 Android Message和obtainMessage的区别

前几天需要实现一个以太网功能就看了以太网的源码部分,看见了源码部分在消息处理时,发现有一些不同的地方: 平时我在处理消息时: 1、首先创建Handler对象: private Handler handler = new Handler(){public void handleMessage(Message msg) {switch (

2014-12-02 22:01:40 640

原创 Android回调机制的理解

定义:所谓回调就是说一个程序里面有一个函数a,我在这个程序里面调用b函数,我希望b函数来调用我的a函数,这个a函数就叫做回调函数。(网上看了好久才明白0-0)C++对回调的实现:比如说我在程序里面调用qsort(a,a+n,cmp)这该快排函数,其中a是数组,n是数组元素的个数,而cmp函数是自己的程序里面定义的。我想让qsort来调用我的cmp函数,就要吧cmp函数指针传给qsort

2014-12-01 20:20:06 1024

转载 Android如何在TextView中显示图片

import android.app.Activity; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.Html; import android.text.Html.ImageGetter; import android.widget.TextView;

2014-12-01 16:41:01 918

转载 Adapter中getView的理解!(convertView )

项目用到ListView,由于要用到 ImageView ,图片源不是在资源里面的,没法使用资源 ID,因此无法直接使用SimpleAdapter,要自己写一个Adapter。 在使用ListView和Adapter需要注意以下几点: 1. Adapter.getView() public View getView(int position, View conver

2014-12-01 14:50:06 1013

转载 LayoutInflater的获取与使用

在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。具体作用:1、对于一个没有被载入或者想要动态载入的界面,都需要使用Layou

2014-11-29 14:37:18 499

复杂网络PPT

这里面有一整套复杂网络的PPT介绍,适合入门者学习。

2013-05-07

ACM中常用的stl

本文档详细介绍了STL的运用,适合初学者学习。在ACM中常用的stl,里卖都有介绍。

2013-05-03

WASM汇编开发工具包

这个工具包可以让你直接进行汇编语言的编写 运行。

2013-03-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除