博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一些Android经验
阅读量:7100 次
发布时间:2019-06-28

本文共 2063 字,大约阅读时间需要 6 分钟。

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

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

 

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

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

解决方案:

1 public static String getProcessName(Context cxt, int pid) {   2     ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE);   3     List
runningApps = am.getRunningAppProcesses(); 4 if (runningApps == null) { 5 return null; 6 } 7 for (RunningAppProcessInfo procInfo : runningApps) { 8 if (procInfo.pid == pid) { 9 return procInfo.processName; 10 } 11 } 12 return null; 13 }

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

1 String processName = getProcessName(this, android.os.Process.myPid());2 3 if (!TextUtils.isEmpty(processName) && processName.equals(this.getPackageName())) {
//判断进程名,保证只有主进程运行4 //主进程初始化逻辑5 ....6 }

 

 

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类获取实现验证码倒计时的按钮

 

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

转载于:https://www.cnblogs.com/wufeng0927/p/5243770.html

你可能感兴趣的文章
ubuntu上安装lua
查看>>
完全检查点与增量检查点的区别
查看>>
rhel5.4安装oracle10g图文步骤1
查看>>
第一节课作业 150206119
查看>>
C++版银行家算法
查看>>
deepin中配置robot framework环境
查看>>
VMware-ESXI RHCS中fence配置
查看>>
深度解析Java内存的原型
查看>>
未能加载文件或程序集“AspNetPager”或它的某一个依赖项。参数错误。
查看>>
Php的时区问题
查看>>
安装HP P2000存储安装步骤
查看>>
NSURLSession不走代理方法的原因
查看>>
Java之JVM内存结构、Java内存模型、Java对象模型
查看>>
distribute-list分发列表详解
查看>>
关于Oracle归档进程的运行机制
查看>>
mail退信分析大全
查看>>
grep命令以及正则表达式,算数运算.
查看>>
九月细说"纯文本链接"
查看>>
IOPS 测试
查看>>
微信公众账号运营培训内部教程
查看>>