Android 异常退出的生命周期分析

概述:典型的Activity 生命周期众所周知,就不用多说了吧;我们知道,Activity除了受用户操作所导致的正常的生命周期方法调度,还有一些异常情况,比如当资源相关的系统配置发生了改变以及系统内存不足时,Activity就可能被杀死,下面就来具体分析这两种情况。     Continue Reading
Xiho's avatar
Xiho Apr 25, 2016
 | 

Android TextView 实现文字间距

概述:Android系统中TextView默认显示中文时会比较紧凑,不是很美观。为了让每行保持一定的行间距,可以设置属性android:lineSpacingExtra或android:lineSpacingMultiplier。但是有时候我们需要在TextView的文本之间有间距,两个字的话,我们可以在xml文件中,用敲空格的方式来实现,如果有很多文本或者是一个变量的文本呢。我们还这样用敲空格的方式来实现吗?oh no~!如何实现行间距和文本间距呢?(请往下看 ↓)。 1、设置TextView的行间距在TextView控件中添加属性: android:lineSpacingExtra="13dp" //设置行间距 android:lineSpacingMultiplier="1.2" //设置行间距的倍数。如”1.2”     Continue Reading
Xiho's avatar
Xiho Apr 18, 2016
 | 

Android 中线程池的分析

介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用。 1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } } ).start(); 那你就out太多了,new Thread的弊端如下: a. 每次new Thread新建对象性能差。b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。c. 缺乏更多功能,如定时执行、定期执行、线程中断。     Continue Reading
Xiho's avatar
Xiho Apr 15, 2016
 | 

Android 网络请求库Retrofit简单使用

什么是 Retrofit ?Retrofit是一套 RESTful 架构的 Android(Java)客户端实现,基于注解,提供 JSON to POJO(Plain Ordinary Java Object ,简单Java对象),POJO to JSON,网络请求(POST,GET, PUT,DELETE 等)封装。 既然只是一个网络请求封装库,现在已经有了那么多的大家已经耳熟能详的网络请求封装库了,为什么还要介绍它呢,原因在于 Retrofit 是一套注解形的网络请求封装库,让我们的代码结构更给为清晰。它可以直接解析JSON数据变成JAVA对象,甚至支持回调操作,处理不同的结果。想更详细的了解 Retrofit,可以查看官方文档 。 话不多说,直入主题~~ 一、集成目前我使用的是AndroidStudio,那么在model的build.gradle文件中添加以下引用: compile 'com.squareup.okhttp3:okhttp:3.2.0' compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4' compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3'     Continue Reading
Xiho's avatar
Xiho Apr 12, 2016
 | 

Android 切换系统语言功能实现(下)

概述:简单介绍下这个需求的缘由,这段时间因公司业务需要,其中有一项“设置系统语言”功能,就是在使用APP的过程中,动态的去切换整个Android机器的语言,具体参照手机设置页面有语言切换功能。期初想来是很简单的事情嘛,不就是个简单的资源国际化嘛,strings.xml资源文件一整还不给OK?真正动起手来就真不是这么一回事了,国际化是没问题,但是怎样能更改所有页面的文字资源呢,这是一个问题。下面介绍下网上找的几个方案。 一、API欺骗 烧制到手机中的android.jar包含了Android所需的各种类与方法;而供开发者使用的android.jar只是其中的一部分。API欺骗是指在应用中去模拟未公开的类和方法让应用编译通过并生成APK,然而在应用实际运行中调用的却仍是烧制到手机中真实的android.jar。 二、使用Java反射机制IActivityManager与ActivityManagerNative都是非公开类,使用Java反射去调用其中的方法。 但是这个弊端是显而易见的,上述两种方法都是去更改系统的语言的类型,功能和你去设置页面去设置语言类型的效果一样。发现对当前系统设置了新的Locale后,不单自己的应用语系改变了,系统所有的应用语系都改变了,这正是我们所需要的。折腾了下下这个很2的问题。网上放的方法比较旧, Android5.1的话, 设置后当时生效, 重启后就失效了。     Continue Reading
Xiho's avatar
Xiho Apr 12, 2016
 | 

Android 切换系统语言源码分析(上)

概述:以前了解Android的多语言实现很简单,可以在不同的语言环境下使用不同的资源,就做好相应的语言适配就好,但是一直没有实际使用过。 最近公司的项目要用到多国语言切换,并且还是和手机上系统设置里面的语言切换功能一样,于是就上网查了下资料。一般都是在应用类实现多国语言切换,这个是很简单。而我想切换整个系统的语言。由于谷歌没有把系统设置里面的接口给开放出来,所以就只好去查看它的源码了~ android语言切换是在: packages/apps/Settings/com/android/settings/LocalePicker.java 的updateLocale()函数中调用,源码如下: /** * Requests the system to update the system locale. Note that the system looks halted for a while during the Locale migration, so the caller need to take care of it. */ public static void updateLocale(Locale locale) { try { IActivityManager am = ActivityManagerNative.getDefault(); Configuration config = am.getConfiguration(); config.locale = locale; // indicate this isn't some passing default - the user wants this remembered config.userSetLocale = true; am.updateConfiguration(config); // Trigger the dirty bit for the Settings Provider. BackupManager.dataChanged("com.android.providers.settings"); } catch (RemoteException e) { // Intentionally left blank } }     Continue Reading
Xiho's avatar
Xiho Apr 12, 2016
 | 

Android 5.1 Settings源码简要分析

概述:先声明:本人工作快两年了,仍是菜鸟级别的,惭愧啊!以前遇到好多知识点都没有记录下来,感觉挺可惜的,现在有机会接触Android 源码。我们一个Android组的搞Setting,我觉得是得写得东西,毕竟才接触,现在只能看一段时间代码,就先记录下一些收获吧,说多了就是泪~本文主要针对L平台上Settings模块正常启动流程做一个简要分析,并试着分析一下Settings下面某选项的实现。 Setting 简介在之前的KK平台上Settings模块的第一个Activity名字为Settings,其继承的是PreferenceActivity,设置的每一个选项都是对应的一个Header对象,并且Header对象允许显示switch控件,button控件,checkbox控件等。如下图1.1,WLAN和蓝牙上使用到了switch开关。但在L上面,WLAN和蓝牙的这两个开关已经去掉了,如图1.2,在Settings模块的首个页面似乎就只是一个普通的Listview,那它用的还是不是Header呢?或者说取而代之的是什么呢?继续往下看吧~ 图片-1.1     Continue Reading
Xiho's avatar
Xiho Apr 11, 2016
 | 

Ubuntu 更改 Gun Make 版本

1:Gun Make 下载地址ftp://ftp.gnu.org/gnu/make/ 2: 下载并解压 make3.8.1.tar.gz$ tar -zxvf make3.8.1.tar.gz 3: 编译Make$ ./configure $ make 4: 安装Make$ sudo make install     Continue Reading
Xiho's avatar
Xiho Apr 10, 2016
 | 

Ubuntu 15.10 下载Android5.1代码环境搭建

概述:作为一个Android开发者,想要自己提升一个阶段,想深入了解 Android 相关的知识,Activity 是工作流程是怎样的? View 是怎样绘制的? 怎样修改一些系统相关的应用?等等,就得要深入Android 源代码~所以就要先获取Android源码: 准备工作: 装一个Ubuntu系统(http://www.ubuntu.com/download/desktop)电脑的内存最好有 8 G,因为编译 Android 源码很吃电脑内存,特别是在 4.4 以后的版本,电脑内存大点,比较保险,编译一次源码要好几个小时,要因为内存原因,太让人郁闷了。ps:( ubuntu装完后把系统软件全都更新一下) 一个翻墙vpn(https://www.trueyt.com/)     Continue Reading
Xiho's avatar
Xiho Apr 10, 2016
 |