1.如果在调试Android程序中,你非常确定你的代码是没有问题的,比如在跟Server交互时候,抓包软件抓到的包是正常的,但是在解析数据时候有问题,

你可以试着换个Android设备看看,模拟器换成真机,小米换成魅族,魅族换成HTC,HTC换成Nexus !

2.有时候会遇到Application里面的方法被执行了很多次,此时可以检查一下是不是多进程造成的,

如果有多个进程,Application就会执行多次,可以通过pid来判断哪些方法只需要执行一次,这样避免产生问题。

解决方案:

 public static String getProcessName(Context cxt, int pid) {
ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> runningApps = am.getRunningAppProcesses();
if (runningApps == null) {
return null;
}
for (RunningAppProcessInfo procInfo : runningApps) {
if (procInfo.pid == pid) {
return procInfo.processName;
}
}
return null;
}

在 Application 的 onCreate 中获取进程名称并进行相应的判断,例如:

 String processName = getProcessName(this, android.os.Process.myPid());

 if (!TextUtils.isEmpty(processName) && processName.equals(this.getPackageName())) {//判断进程名,保证只有主进程运行
//主进程初始化逻辑
....
}

3.在Android 5.0以上就不再支持隐式的调用Service

比如如下:

在Android 5.1机器上会出现:

可以修改为如下:

4.ListView中的局部刷新:

5.Java引用类型一览表:

6.Context使用场景:

7.dpi文件大小换算比例:

8.SharedPreferences.Editor.commit这个方法是同步的,一直到把数据同步到Flash上面之后才会返回,由IO操作的不可控,尽量使用apply方法代替。apply只在API Level>=9才会支持,需要做兼容。不过,最新的 support v4 包已经为我们做好了处理,使用 SharedPreferencesCompat.EditorCompat.getInstance().apply(editor) 即可。

9.PackageManager.getInstalledPackages这个方法经常使用,你可能不知道,当获取的结果数量比较多的时候,在某些机型上面调用它花费的时间可能秒级的,所以尽量在子线程中使用。另外,如果结果太多,超过系统设置的Binder数据最大传输量的上限,则会发生TransactionException,如果你使用这个方法获取机器上的己安装应用列表,最好做一下预防。

10.定义常量时使用十六进制,可以减少语法分析次数。(本身没有测试过,不过在很多地方都会这么定义)

11.可以学会使用properties来存储,因为sqlite用来存储数据量多的情景,File存储读取不便,而Properties属性文件都有键值对应,

由于Properties是一个集合类,所以Properties会将属性以集合的形式读写。

12.获取控件的两种方式:findViewByID()和getChildAt()

13.底部是一个RadioButton[],如果在点击的时候,无法判断是哪一个受到了点击,可以使用setTag[]

14.Android view getVisibility()的值:

(1)0    --------   VISIBLE    可见
(1)4    --------   INVISIBLE    不可见但是占用布局空间
(1)8    --------   GONE    不可见也不占用布局空间

15.使用CountDownTimer类获取实现验证码倒计时的按钮

http://developer.android.com/reference/android/os/CountDownTimer.html

16.listview与Button(或者ImageButton)冲突

一些Android经验的更多相关文章

  1. Android -- 经验分享(二)

    目录                                                                                   自定义两个View进行画图,让 ...

  2. Android -- 经验分享

    目录                                                                                             代码中安装 ...

  3. 【转】 Android经验: proguard 阻碍 webview 正常工作

    转自:http://blog.csdn.net/span76/article/details/9065941 WebView 常识 使用 Alert  提供消息 我在页面经常用 Alert 提供消息, ...

  4. virtualbox 安装 android 经验总结

    装了好多个版本,最终总结一下遇到的问题, 1.直接下载的镜像文件没有找到如何设置分辨率的方法,因此放弃使用 2.在安装过程中,首先创建虚拟机,在virtualbox中创建硬盘的时候一定要选HDD格式, ...

  5. Android 经验: 5555 端口会被 adb 误认为 emulator

    在本机启动 Android, 再用本机的的 adb 去连接 adb connect 127.0.0.1:5555 而后 adb devices 查看 user@ubuntu:~$ adb device ...

  6. ubuntu12.04下编译Linux tina 2.1/android经验

    用的是osboxes下的vdi. 编译Linux 1. 不能在root用户下操作 2. 执行 make kernel_menuconfig 报错,需要 apt-get install zlib1g z ...

  7. Android 经验之文件下载

    在Android 开发中,我们肯定会接触到下载需求,那么如何通过技术实现呢? 一.简单实现: 通过了解HTTP原理,我们应该可以知道,HTTP学习的时候,可以通过HTTPGET方式来进行文件下载: n ...

  8. Android -- 经验分享(三)

    目录 获取系统版本号 获取系统信息 获取安装路径和已安装程序列表 获取图片.应用名.包名 解决listview上Item上有按钮时item本身不能点击的问题 不让文本框输入中文 获取屏幕宽高 将Tab ...

  9. 面试时,问哪些问题能试出一个 Android 应用开发者真正的水平?【转自知乎】

    这几年面过的各种Android开发也有三位数了,failed的不敢说,pass的基本都没有看走眼,来得晚了也想说说我的体会. 一般面试时间短则30分钟,多则1个小时,这么点时间要全面考察一个人难度很大 ...

随机推荐

  1. Myeclipse新建 配置Hibernate

    一.新建一个JAVA项目 二.选中新建的项目单击右键[Add Hibernate Capab-] 三.添加MyEclipse Hiberate Libaries(Hibernate 3.2) 单击[B ...

  2. 我的Emacs折腾经验谈(三) speedbar , tabbar 还有linum-mode

    离上一篇博客已经很遥远了,最近总是各种逛,但没有心思静下来写点东西,这回写一下我之前用的一些东西. Speedbar 首先是speedbar,这个东西是emacs自带的,效果立竿见影,请输入M-x s ...

  3. 让textbox紧贴IME

    将textbox放与页面最下方,并取消ApplicationBar. IE的ApplicationBar里放个了textbox,效果很炫,最重要用户体验很好. 于是也想对自己textbox做这样的设计 ...

  4. enode框架step by step之saga的思想与实现

    enode框架step by step之saga的思想与实现 enode框架系列step by step文章系列索引: 分享一个基于DDD以及事件驱动架构(EDA)的应用开发框架enode enode ...

  5. 设计模式:空对象模式(Null Object Pattern)

    设计模式:空对象模式(Null Object Pattern) 背景 群里聊到<ASP.NET设计模式>,这本书里有一个“Null Object Pattern”,大家就闲聊了一下这个模式 ...

  6. [基础]RHEL6下LINUX服务器批量部署

      包准备:xinetd,tftp-server,dhcp,httpd,system-config-kickstart,syslinux,nfs   试验环境: 本机地址:192.168.46.98 ...

  7. linux 下把Caps_Lock 映射成Ctrl

    我用的是debian 7,以前是gnome桌面,系统里就有改变键盘布局的设置.之前gnome 崩了一次,就换成了openbox ,稍微配置了一下也可以很好使用. 可以参考这篇文章 5分钟openbox ...

  8. Linux负载均衡软件LVS之三(配置篇)

    LVS集群有DR.TUN.NAT三种配置模式,可以对www服务.FTP服务.MAIL服务等做负载均衡,下面通过搭建www服务的负载均衡实例,讲述基于DR模式的LVS集群配置. 一. Director ...

  9. 结构-行为-样式-Angularjs-ngSanitize

    简单点,上代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

  10. 微信--高效解决token及授权用户openid的持久化处理办法

     摘要 关于微信开发的话题,例子确实已经有不少,但大部分都是人云亦云,很多小细节或者需要注意的地方却大多没有讲清楚,这令很多刚开始开发的人感觉大很迷茫.而我今天要说的话题,主要着眼于两个方面. 一:如 ...