今天是手机卫士最后一天
1,简易屏幕适配:
①使用线性,相对,帧布局,这三种常用布局在所有设备上几乎可以完整实现,多使用dp,sp,不要使用像素,dp,sp会自动适应屏幕
②浮动窗体显示的距离问题:它show出来的距离就是像素,所以显示距离不会适应屏幕.
代码里接收的单位一般都是像素.
解决方式:把输入的数字转换成dp单位.
得到像素密度*像素 获得dp数据,根据屏幕实现的像素效果
通过工具类去转换成dp数据DesityUtils
2,应用程序的异常处理:
2.1
alpha版本:小范围的内部测试,BUG会比较多,不稳定
beta版本:比较稳定.可以考虑发布到市场上了
稳定版本,正式版:基本上没有BUG
2.2
应用程序弹出对话框,停止运行.
重写对话框,在对话框弹出来之前就获取到异常放到文件中
①创建一个类:应用程序类,继承Application
配置清单文件application界面,选择name标签,配置这个继承类即可
②onCreate()//在应用程序创建之前执行的第一个方法,适合做应用程序初始化操作.
//重写系统的异常处理器.
Thread.currentThread().getDefaultUncaughtExceptionHandler()//获取当前默认的未捕获异常的异常处理器,弹出一个异常停止的对话框
Thread.currentThread().setUncaughtExceptionHandler(UncaughtExceptionHandlerhandler);
③实现这个异常handler,重写方法就可以捕获异常消息
但是虚拟机依然会挂掉,这个是没办法的,不过可以多执行几行代码,把异常写到日志里
然后杀死掉当前进程(不然会一直卡在界面上)早死早超生,内存充足的情况下还会重启.
android.os.Process.KillProcess(android.os.Process.myPid());//只能杀掉自己的pid进程
④应用程序异常的信息处理
在重写方法里的参数Throwable ex,保存有错误的信息
ex.printStackTrace(ps);//把异常信息写到打印输出流里
PrintWriter pw = new PrintWriter(字符串输出流);//把信息写到字符串输入流里
StringWriter sw = new StringWriter(); sw.toString()//可以获取字符串
可以把这个sw代表的错误信息写到文件里
⑤只有错误信息还不够
还需要:产生错误的时间System.currentTimeMillis();
手机操作系统的信息Build,利用反射获取,getDeclaredFields();//获取字段
//遍历每一个字段,field.getName(); //字段名
field.get(对象,静态可以为null) //字段代表的值
友盟:开发者服务平台,里面有异常捕获的JAR包 更专业一些
3,安卓的盈利模式
3.1 付费软件(一般比较少,go桌面,带有自定义主题)
增值服务(一般游戏里出现)
免费应用,通过广告流量赚钱
广告平台:百度移动联盟,有米等
获取到广告平台的JAR包,查看平台发布的帮助文档.里面介绍很详细的
4,应用程序的加密混淆
在project.properties文件中,打开config内容config = ${sdk}xx路径
Sdk 下这个文件proguard-android.txt
把这个文件拷贝到项目下,然后修改config指定的文件名即可
然后导出apk(数字签名XXXX),这样生成的apk就是加密混淆过的
原理:生成apk文件的时候把类名和方法名进行动态的修改(反正系统又不看名字,名称只是为了程序员方便编写而已)