记录项目中的android零碎知识点,用以备忘。

1、android 自定义权限
  app可以自定义属于自己的权限:

<permission android:description="string resource"
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal" | "dangerous" |
"signature" | "signatureOrSystem"] />

其中protectionLevel 为权限等级:
1、normal:默认授予权限不提示用户;
2、dangerous:安装声明此类权限时通知用户;
3、signature:只对使用同一证书签名的APP开放;
4、signatureOrSystem:在signature基础上,在ROM上增加自带APP声明;
诸如:BroadcastReceiver + android:protectionLevel=signature,则只能接受相同签名APP发来的消息;

2、android:process
  默认情况下,android为每一个应用创建一个进程,所有的组件运行于改进程下。进程名字为package名,如com.xx.xx;
  应用有自身独立的内存和资源控件,为了解决单进程的资源限制,android提供了应用内的多进程,比如在复杂绘制,频繁消息监听等独立进程。采用的就是android:process属性。
  <activity>,<service>, <receiver>, 和<provider> 都具备该属性。
  android:process = ":hello"
  android:process = ".hello"
  以":"开头,则表示这个进程是私有的;进程名为com.xx.xx:hello
  以小写字母开头,则表示这是一个全局进程,允许其它应用程序组件也在这个进程中运行,进程名为hello

3、日志模块
  Android提供了较为成熟的日志模块,但在商用软件还用该加以扩展。
    1、在android外部存储中定义日志存储文件路径;
    2、调用日志工具类时,除原生log外,写入文件;
    3、写文件时注意单独起线程,可以利用:
      private static final Executor logger = Executors.newSingleThreadExecutor();
        logger.execute(new Runnable(//日志文件写入)}

4、activity的android:configuration属性

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

5、自定义view

android的自定义view主要重写onDraw、onLayout、onMeasure,但后两者用于重写viewgroup的。onLayout用于设定childview的相对布局,而onMeasure用于WRAP_CONTENT时

本viewgroup的大小,比如你内部有两个宽度20dp的imageView,那么自身宽度可能就是 20 *2 + 30。

6、android 使用getDefaultUncaughtExceptionHandler 获取全局异常
Android的“程序异常退出”,给用户体验造成不良影响,便可继承UncaughtExceptionHandler类来处理,
通过Thread.setDefaultUncaughtExceptionHandler()对异常进行捕获处理。(事实上是java 5.0之后支持的) 代码示例如下:

import java.lang.Thread.UncaughtExceptionHandler;

public class App {

  public static void main(String[] args) {
TestThread a = null; new TestThread("Fredric Test 1").start();
new TestThread("Fredric Test 2").start(); /*
* 输出结果
This is:Fredric Test 1,Message:/ by zero
This is:Fredric Test 2,Message:/ by zero
*/
}
} class CrashHandler{ private static CrashHandler instance;
private UncaughtExceptionHandler handler; private CrashHandler(){
handler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(){ @Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("This is:" + t.getName() + ",Message:"+ e.getMessage()); handler.uncaughtException(t, e);
}
});
} public static CrashHandler getInstance(){
if(null == instance){
instance = new CrashHandler();
} return instance;
}
} class TestThread extends Thread { public TestThread(String name) {
this.setName(name); //在Application的onCreate中调用即可
CrashHandler.getInstance();
} public void run() {
double i = 10 / 0;// 抛出异常的地方
}
}

android知识杂记(三)的更多相关文章

  1. android知识杂记(一)

    记录项目中用的零碎知识点,用以备忘. android:screenOrientation:portrait 限制横屏 activity启动状态 singleTop 只执行一次,通常用在欢迎页面 sin ...

  2. Appium python自动化测试系列之Android知识讲解(三)

    ​3.1 ADB工具讲解 3.1.1 什么是ADB呢? 我们不去解释官方语言的翻译,给大家说一个通熟易懂的说法,ADB我理解为他就是电脑和手机连接的桥梁.此连接不是充电的连接,大家不要混淆,说他是一个 ...

  3. Android知识杂记(四)

    1.完整退出activity的设计思路 1.1 封装一个基础activity类 public abstract class RootActivity extends FragmentActivity{ ...

  4. android知识杂记(二)

    记录项目中的android零碎知识点,用以备忘. AsyncQueryHandler 继承与handler,可以用于处理增删改(ContentProvider提供的数据) 例如:query = new ...

  5. Android 知识杂记(MVP模式)

    MVP的模式在于将原来activity中业务逻辑的部分剥离出来,代码示例如下: Account public class Account { private String mUsername; pri ...

  6. 三、Android学习第三天——Activity的布局初步介绍(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 三.Android学习第三天——Activity的布局初步介绍 今天总结下 ...

  7. android Graphics(三):区域(Range)

    前言:最近几天对画图的研究有些缓慢,项目开始写代码了,只能在晚上空闲的时候捯饬一下自己的东西,今天给大家讲讲区域的相关知识,已经想好后面两篇的内容了,这几天有时间赶紧写出来给大家.有关界面开发的东东内 ...

  8. Android知识补充(Android学习笔记)

    Android知识补充 ●国际化 所谓的国际化,就是指软件在开发时就应该具备支持多种语言和地区的功能,也就是说开发的软件能同时应对不同国家和地区的用户访问,并针对不同国家和地区的用户,提供相应的.符合 ...

  9. android 实践项目三

    android 实践项目三 本周我主要完成的任务是将代码进行整合,然后实现百度地图的定位与搜索功能.在这次实现的 图形界面如下: 在本周的工作中主要的实现出来定位与收索的功能,在地图中能实现了定位,显 ...

随机推荐

  1. Javascript.Reactjs-5-prop-validation-and-proptypes

    Props & PropTypes 1. Props "Props are the mechanism React uses to let components communicat ...

  2. [Docker]Docker快速上手学习笔记

    0. 学习的一些疑问 如何热更新镜像(images)?(你可以快速启动或者销毁容器.这种时间几乎是实时的) 如何热更新游戏服? 好处在于各个应用之间环境相互独立,即使某一个容器崩溃也不会影响到其它容器 ...

  3. css高级应用及问题记录(持续更新)

    css 参考手册: 1.http://css.doyoe.com/ 1.混合选择器样式定义: .button.icon:before {    content: "";    po ...

  4. HTML5之语义标签

    在HTML5标准中,新加了几个用于增添页面语义的标签,这些标签有:article.section.nav和aside等.与别的大多数标签不 同,浏览器在解释渲染这些标签的时候仅仅把它作为普通的div块 ...

  5. pd name与comment互换,或者code互换,总之互换

    1 PowerDesigner中批量根据对象的name生成comment的脚本 执行方法:Open PDM -- Tools -- Execute Commands -- Run Script Opt ...

  6. 自己关于cocoapods的使用的一些理解和总结

    老大让我自己学习用一下cocoapods的使用,于是自己上网查了很多的信息,在安装使用过程中,总是出现了很多问题,然后发现有些人的教程好像并不完全好用,我的感觉是应该每个人遇到的问题都不尽相同,所以 ...

  7. NABCD

    1) N (Need 需求) 随着科学技术的进步和计算机行业的迅速发展,人们的工作效率得到大大提高.计算机信息处理系统的引进已彻底改变了许多系统的经营管理. 图书管理系统是学校管理机制中的重要组成部分 ...

  8. 自定义滚动条——控制div的大小和透明度

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 31.0px Consolas; color: #2b7ec3 } p.p2 { margin: 0.0px ...

  9. PHP二维数组排序

    $arrays   要排序的数组 $sort_key 根据排序的key $sort_order 升序降序    SORT_ASC/SORT_DESC $sort_type 排序key类型 SORT_N ...

  10. spring aop一些名词的理解

    最近想深入了解spring,已经使用spring一段时间,但是对spring的理解一直很肤浅,先把几个常见的名词理解一下. 比如一个ssh架构的电商系统上面有用户模块,商品模块,订单模块,支付模块等, ...