自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 Activity启动模式singleTask与任务栈关系

现有四个Activity:MainActivity DetailActivity Task2CActivity Task2DActivity启动模式singleTask和taskAffinity属性配置以及任务栈如下一、不配置singleTask <activity android:name=".activity.MainActivity" android:taskAffinity="com.i.designpattern"

2021-12-05 21:19:39 688

原创 Android-Skin-Loader换肤框架剖析

文章目录一. 背景1. 基本原理2. LayoutInflater二. 框架Android-Skin-Loader解析1. android-skin-loader-lib1.1 SkinManager:皮肤包核心管理类1.2 SkinInflaterFactory:收集所有可替换皮肤View类1.3 代码动态换肤2. android-skin-loader-skin3. android-skin-loader-sample一. 背景换肤功能,是很多公司项目中的重点功能,仅仅会用那是远远不够的,需要对换肤

2021-11-24 11:22:33 3523 1

原创 LayoutInflater Factory创建自定义View

LayoutInflater Factory的介绍LayoutInflater类中有三个关于Factory的变量 @UnsupportedAppUsage private Factory mFactory; @UnsupportedAppUsage private Factory2 mFactory2; @UnsupportedAppUsage private Factory2 mPrivateFactory;在Activity中设置setContentVie

2021-11-16 11:08:33 2691

原创 Android内存和掉帧优化方案

一、内存优化方案1、图片策略:(1)信息流上快速滑动不加载图片;(2)第三方Glide禁止内存缓存策略;(3)低内存版本图片使用RGB_565的低清晰格式;2、主动回收:(1)回到桌面成为后台进程时,主动kill com.miui.newhome进程以及回收内存;(2)信息流上内存告急时通知系统回收;3、减少缓存(1)布局尽量使用ViewStub;(2)MiuiLite版本在信息流上使用仅保留最近1个Tab缓存数据;(3)RecyclerView、ViewPager控件使用最少的缓存个

2021-06-22 11:56:06 361

原创 插件工程异常

一、背景介绍云助手最初的引入库,是内置在系统的 /system/framework/cloud.jar,其包含了统计、云服务等方面的接口类,后来将统计、云服务单独解耦,故将云助手的引用更新为直接引用工程Cloud二、产生问题、原因深究、解决方案(1)产生问题:云助手ClassNotFoundException crash原因深究:云助手是运行在32位的环境中,Cloud工程是运行在64位的环境,当32位的云助手调用64位的Cloud的api的时候,就会出现异常ClassNotFoundExcepti

2020-10-12 11:29:10 221 2

原创 Android 软键盘不能弹出

记录一次软键盘不能调出来的问题一、前提条件设置其所在Activity,AndroidManifest.xml属性 android:windowSoftInputMode=“stateVisible|adjustResize”EditText点击本身的话,据系统规则会调用起软键盘二、操作表现点击EditText,系统没有调用软键盘,不知为何原因?故手动调用软键盘看能不能调用起来Inpu...

2019-10-17 11:16:40 2151 2

原创 JaCoCo测试代码覆盖率

一.背景介绍在产品客户端的测试过程中,新功能测试以及回归测试在手工测试的情况下,即便是测试用例再详尽,难免也可能会有疏漏之处。故使用代码覆盖率工具Jacoco作为手工测试代码覆盖率的统计.解决的问题: 通过查看测试代码覆盖率客观数据,来进一步完善业务测试场景,完善测试用例.二.使用方法1. 由于Android本身集成了Jacoco工具,故在其他工程如果需要生成代码测试覆盖率,则仅需要添加如...

2019-08-06 10:52:13 714

原创 Hander消息机制

2019-06-13 11:14:36 119

原创 Java垃圾回收机制

2019-05-05 11:05:59 123

原创 adb常用命令

adb shell kill 14884 //pidadb shell ls /data/data/ //查看文件adb reboot、adb disable-verity(解锁system分区)、adb root、adb remountadb shell ps | grep com.android.homeadb shell ps | grep zygotero...

2018-11-15 16:53:36 776

转载 Android Studio不能获取远程依赖包的完美解决方法

最近被一个AS的sync问题困扰,在引入远程依赖包的时候,会出现一个sync错误,提示找不到这个类库。然而,并不是所有的工程都会出现这个问题,有的工程引入同样的类库却没有问题。 Error:(25, 13) Failed to resolve: com.jakewharton:butterknife:5.1.1 网上查了下(http://stackoverflo...

2018-04-04 14:38:02 5684

原创 AlertDialog引起的内存泄露

一. 追踪Dialog泄露根源 在我们使用AlertDialog时,标准的写法如下AlertDialog.Builder builder = new AlertDialog.Builder(this) .setPositiveButton("confirm", new DialogInterface.OnClickListener() { @Override

2017-12-29 17:48:38 4978

原创 IllegalStateException解析

1. AsyncTask IllegalStateException最初的写法如下 if (asyncTask == null) { asyncTask = new MyAsyncTask(); } else { asyncTask.cancel(true); } asyncTask.execute();则在测试中偶现: java.lang.IllegalStateExc

2017-09-07 18:45:34 4410

转载 Background 导致 Padding 无效解析

1、问题描述 很多同学可能都遇到过这个问题: 明明在布局文件中设置了View的padding, 然后程序中动态设置了背景, 运行后发现padding不对。如下代码:<TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="w

2017-07-11 12:01:53 1227

原创 JSONObject null转为“null”源码解析

一、JSONObject初始化调用流程public JSONObject(String json) throws JSONException { this(new JSONTokener(json));}public JSONObject(JSONTokener readFrom) throws JSONException { Object object = readFrom.ne

2017-06-20 13:44:18 1747

原创 Android跨进程访问资源

1、 通过Uri获取Bitmap对象 private Bitmap getBitmapFromUri(Uri uri){ try{ // 读取uri所在的图片 Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),uri); return bitmap; }catch (Exc

2016-09-22 09:31:50 1274

原创 art dalvik gc对比

dalvik的gc的过程: 1、当gc被触发时候,其会去查找所有活动的对象,这个时候整个程序与虚拟机内部的所有线程就会挂起,这样目的是在较少的堆栈里找到所引用的对象.需要注意的是这个回收动作是和应用程序同时执行(非并发). 2、gc对符合条件的对象进行标记 3、gc对标记的对象进行回收 4、恢复所有线程的执行现场继续运行注:dalvik这么做的好处是,当pause了之后,gc势必是相当快速的

2016-07-04 10:50:26 971

原创 Handler利用WeakReference回收activity

public class MainActivity extends Activity { private TextView textView; Handler normalHandler = new Handler(){ @Override public void handleMessage(Message msg) { swit

2016-04-09 09:40:17 1240

原创 JVM内存分析

JVM内存组成结构JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)1)堆所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由From Space和To Space组成,结构图如下所示:新生代。

2016-02-25 15:22:08 468

转载 Android WebView总结

1、添加权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。在Androidmanifest.xml文件中添加 <uses-permission android:name="android.permissio

2016-01-05 18:25:55 469

转载 Android 输入限制

限制只输入某些值包括数字、字母等android:digits="0123456789abcdefghigklmnopqrstuvwxyz"上面这行代码可以是你任何的限制,只能输入什么就到里面写就可以了,上面写的是只可以输入数字和字母。android:inputType="textPassword"android:digits="0123456789abcdefghigkl

2015-12-28 22:16:29 1031

原创 Fragment切换百度地图,黑屏

去除MapView,使用TextureMapView

2015-12-07 20:42:19 1184 1

原创 android显示gif图片

1、public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);}}2、

2015-10-28 11:41:38 672

原创 Myeclipse 安装 gradle 插件以及基本使用

1、在线安装地址http://dist.springsource.com/release/TOOLS/update/e4.4这是spring提供的,天朝不一定能访问,可能需要翻墙,2、选择Core / Eclipse Integration for Gradle -> Gradle IDE这个是gradle 的核心了下面直接点击下一步,即可完成安装。 3、使用m

2015-08-25 08:22:52 14069 2

原创 Android java 中如何优雅的结束线程

Android java 中如何优雅的结束线程线程对象属于一次性消耗品,一般线程执行完run方法之后,线程就正常结束了,线程结束之后就报废了,不能再次start,只能新建一个线程对象。但有时run方法是永远不会结束的。例如在程序中使用线程进行Socket监听请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循环中,如while循环。当需要结束线程时,如何退出线程呢?有三种方法

2015-08-05 10:43:25 579

原创 Android主线程、子线程通信(Thread+handler)

Android是基于Java的,所以也分主线程,子线程! 主线程:实现业务逻辑、UI绘制更新、各子线程串连,类似于将军; 子线程:完成耗时(联网取数据、SD卡数据加载、后台长时间运行)操作,类似于小兵; 一、子线程向主线程发消息(Thread+handler): 1、主线程中定义Handler: Java代码  Handler mHandler 

2015-07-11 16:46:00 2628

原创 ScrollView包裹,标题头置顶

http://115.com/lb/5lbc6ev1q4lx#HeaderTop.rar 115礼包码:关注我,私信给你效果如下:

2015-04-07 13:39:03 2445 1

转载 据说年薪30万的Android程序员必须知道的帖子

Android中国开发精英目前包括:    Android开源项目第一篇——个性化控件(View)篇       包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、ScrollView、TimeView、TipView、FlipView、ColorPic

2015-03-12 16:52:23 31494 14

原创 Android签名打包,strings.xml不停地报错

在刚安装好Eclipse以及ADT插件,准备开发Android的朋友可能会遇到这样的问题:在android项目中,打开或者编辑strings.xml都会不停的报错:java.lang.nullpointerexception。 我也遇到过这种情况,在网上搜索了一些信息,在一个论坛上看到说是Eclipse的bug,解决方法为:点击Window菜单/选择Preferences选项/进入

2014-08-11 18:19:41 5241 2

原创 Android 触摸事件传递机制

android系统中的每个View的子类都具有下面三个和TouchEvent处理密切相关的方法:1)public boolean dispatchTouchEvent(MotionEvent ev)  这个方法用来分发TouchEvent2)public boolean onInterceptTouchEvent(MotionEvent ev) 这个方法用来拦截TouchEvent3)

2014-03-25 11:36:26 16349 5

原创 进程之间数据共享

一、Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下:SharedPreferences sharedPreferences = getSharedPreferences(

2014-03-05 14:44:21 2199

原创 Android 内存优化

一、 Android的内存机制    Android的程序由Java语言编写,所以Android的内存管理与Java的内存管理相似。程序员通过new为对象分配内存,所有对象在java堆内分配空间;然而对象的释放是由垃圾回收器来完成的。C/C++中的内存机制是“谁污染,谁治理”,java的就比较人性化了,给我们请了一个专门的清洁工(GC)。    那么GC怎么能够确认某一个对象是不是

2014-03-03 16:12:39 16551 2

原创 OAuth认证原理

使用OAuth进行认证和授权的过程如下所示:1、用户访问客户端的网站,想操作用户存放在服务提供方的资源。2、客户端向服务提供方请求一个临时令牌。3、服务提供方验证客户端的身份后,授予一个临时令牌。4、客户端获得临时令牌后,将用户引导至服务提供方的授权页面请求用户授权。在这个过程中将临时令牌和客户端的回调连接发送给服务提供方。5、用户在服务提供方的网页上输入用

2014-03-03 13:22:43 1698

原创 ContentProvider何时创建?SQLiteDatabase方法何时执行?

ContentProvider何时创建?1、ContentProvider所在的Process启动了,ContentProvider就会在ActivityThread中启动。2、从数据共享的角度出发,ContentProvider应该是Android在系统启动时就创建了,否则就谈不上数据共享了。这就要求在AndroidManifest.XML中使用元素明确定义。

2013-12-25 17:21:19 4837

空空如也

空空如也

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

TA关注的人

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