android开发小知识总结(一)

1,选中某数字,按住 ctrl+Alt+c,可以将该数字声明为常量,很方便

2,如果对一段代码添加判断,循环或者添加异常,同步等可以选中这段代码,然后Ctrl+Alt+t.

3.Android中的弱引用,如果GC检测到弱引用对象,无论内存是否充足都会将其回收,而对于强引用的对象,即使报OOM的错误,也不会回收。软引用对象,当内存充足,就不会回收,内存不足,才会回收。

 Handler的调用是异步的,最容易出现OOM的问题,为了解决这个问题,会使用弱引用。

4.

int num= new Random().nextInt(500) //生成0到500之间的随机数,包括0,但不包括500

5.Handler,MessageQueue,Message,Looper之间的关系:


    MessageQueue是一个消息队列,实质上是一个单链表,中间包含很多的Message,Looper相当于一个发动机,它一开始工作,就会把消息队列中的消息发送给Handler,Handler来处理这些消息。

   Handler的主要作用:1.实现定时任务;2.消息处理,通知主线程更新UI。

   每一个线程都包括这四项,在主线程中其实已经帮我们写好了,getMainLooper()获得主线程的Looper,在子线程中使用Handler需要这样写:

 Looper.prepare();

 Handler handler=new Handler();

 Looper.looper();


6.ANR(Application Not Responding)应用程序无响应,在UI线程中执行耗时操作引起的。

7.AsyncTask:用Thread和Handler实现封装来实现后台线程完成后更新UI;

   

8.android6.0(API 23)后添加了动态权限,即6.0及以上的系统,读取联系人信息,位置信息等权限处理在配置文件中声明之外,还需要动态设置权限,让用户开启权限,保证用户的隐私和安全。

9.打开设置权限:

Intent intent=new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("package:"+getPackageName()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
startActivity(intent);

10.获取手机上安装的所有应用的信息:

private List<ResolveInfo> getAppsInfo() {
    Intent intent=new Intent(Intent.ACTION_MAIN,null);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    return getPackageManager().queryIntentActivities(intent,0);
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值