Android 开发小技巧(1)
来源:互联网 发布:iphone6s蜂窝数据快捷 编辑:程序博客网 时间:2024/06/05 00:18
在android开发时需要注意以下的细节问题:
1.一个显示系统可用内存的方法
在进行android开发时,因为设备上的内存较小,有很多的程序在模拟器上运行没有问题,但是到了设备上就会经常因内存溢出而使程序崩溃.那么遇到这类问题应该如何解决呢?根据我的开发经验,使用一下步骤进行解决.
StringBuffer sbf=new StringBuffer(); private void displayAvailMemory() { final ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo(); activityManager.getMemoryInfo(outInfo); sbf.append("\n================剩余内存:---->").append(outInfo.availMem >> 10).append("k"); Log.i(TAG, sbf.toString()); }选取一个程序不用的按键(如打电话键),或者在界面的超类添加一个显示内存的菜单,然后让这个按键或添加的菜单的事件相应为调用显 示剩余内存的方法。
在怀疑会产生内存泄漏的地方的操作后点击上面定义的按键(如打电话键),然后在LogCat中观察显示内存的变化。
2.setText方法的使用细节
在调用很多组件的setText()方法时,如果设置的值为数字,不能直接将数字传入,需要将数字转换为String才能得到 正确的结果。
3.setColor方法的使用细节
在调用setColor时,如果传入的是一个resid,需要调用getResource().getColor(int resId),获取正确的颜色值,才能得到正确的结果。
4.获取View的Height和Width的合适时机
当此组件有事件触发的时候,因为只有组件被画出来了,才能接受事件。比如在点击或触摸,长按等事件触发时调用该组件的这两个方法,就可以获取正确的结果。
在这个组件的onDraw方法里面调用这两个方法,也可以获取正确的结果。
5.如何正确设置View的Width和Height属性
在代码中设置View的Width和Height属性,不能通过setWidth或setHeight方法进行设置,需要调用getLayoutParams().进行设置,例如:
view.getLayoutParams().width=100; view.getLayoutParams().height=100;
6.SQlite的问题
如果在对SQLite进行操作时database is locked ,可能是SQLiteDatabase没有close
7.如何减少Android系统中的ANR问题
1).尽量在主线程中少做事情,尤其是一些耗时较长的操作。主线程只负责构造界面,响应用户的事件。耗时较长的 操作可以采用多线程或AsyncTask,并且尽量采用AsyncTask。并且一些button或player等组件的监听器也是执行的主线程,也不能有太多的操作。
2).主线程和监听器的方法中不能有Thread.sleep()。否则也会阻塞主线程。
8.在android源码中编译自己的模块
在进行android下的jni开始时,我们编写的有些C/C++代码需要访问android中的一些C/C++的头文件,这些头文件没有在NDK中包含,不能再NDK中直接编译。只能放入到android的源码中进行编译。编译的方法为:
1).在android的源码的development路径下创建一个文件夹,取名为screen(可以取任意的名称),然后将需要编译的C/C++文件放入这个文件夹,然后编写makefile文件Android.mk,内容大致如下:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_LDLIBS := -lm -llog//这一句是可选的,如果代码中使用android中的记录日志的api,就需要加上,否则不需要加上。LOCAL_MODULE := HelloWorld LOCAL_SRC_FILES := HelloWorld.cppinclude $(BUILD_EXECUTABLE) 此处设置为生成可执行的目标码,如果生成so共享库,则需要修改为include $(BUILD_SHARED_LIBRARY)
2).然后在android源码的根目录下运行make HelloWorld就在out\target\product\generic\system\bin生产了可执行的目标码,如果makefile中指定为生产共享库,在生成的so文件在out\target\product\generic\system\lib文件夹下
9.android上设置静态ip
如果在运行android程序时,经常报出java.net.UnknownHostException可能是就是dns有问题,这时可以尝试一下将设备设置为固定IP。设置的方法为Settings—>Wireless Controls—>Wi-Fi setting(通过menu) —>Advanced.然后在Advanced界面进行设置,设置方法同PC。10.Android WiFi 电源管理
Android 对WiFi电源管理的代码主要在WifiService.java中。如果应用程序想在屏幕被关掉后继续使用WiFi则可以调用acquireWifiLock来锁住WiFi,该操作会阻止WiFi进入睡眠状态。当应用程序不再使用WiFi时需要调用releaseWifiLock来释放WiFi。之后WiFi可以进入睡眠状态以节省电源。
默认情况下当屏幕被关掉以后,如果没有应用程序在使用WiFi,WiFi会在2分钟后进入睡眠状态。这主要是为防止频繁地改变WiFi的电源模式。
- Android 开发小技巧(1)
- android开发小技巧
- Android开发小技巧
- Android开发小技巧
- android开发小技巧
- Android开发小技巧
- android开发小技巧
- Android开发小技巧
- android 开发 小技巧
- Android 开发小技巧
- android 开发小技巧
- android开发小技巧
- Android开发小技巧
- Android开发小技巧
- Android 开发小技巧
- android开发小技巧2(Dx 1 error; aborting)
- Android开发中的小技巧(1)
- Android 开发小技巧(2)
- 用word中的正则表达式批量删除不想要的东西
- java插入法排序学习笔记
- 不同浏览器读取XML问题
- 【leetcode】4Sum
- SICP Section 2.2.1
- Android 开发小技巧(1)
- Cookie的应用
- stucts 页面跳转
- 暗黑破坏神3难度的钥匙去哪里打?
- 改错(1)
- Debian Wirelwss Network Howto
- cf256e
- 接口继承规则
- 使用GDB调试Android手机中的程序