Android材料备用

Android思维导图 Android思维导图 - 简书 !

blog含有下面这些导图: 四大组件UI 设计,常用view使用,网络,线程和进程,数据存储,进阶学习,编程基础,网络协议,数据库,开源框架,测试基础

android上层:4大组件,handler机制,控件使用(xml layout,控件属性) sufaceText

Camera: startPreview

流程简图

参考:Android Camera 流程学习记录(四)—— Camera.startPreview() flow - StoneDemo - 博客园 

take phone

流程简图

Android应用启动、退出分析 Android应用启动、退出分析 - 简书 

 垃圾回收

5、异常
1)ANR(application not responding)
产生原因
这个异常经常会遇到,它会弹出一个对话框,让用户选择是等待还是关闭程序。
在Activity最长的执行时间是5s,Service中是20s,BroadcastReceiver中,最长的执行时间是10s,如果在这个事件内没有完成,系统就会弹出这个对话框,主要是由WMS和AMS监视的。所以可见,产生这个异常的原因就是在主线程中做了耗时操作。

解决
1、使用AsyncTask处理耗时IO操作
2、使用handler处理工作线程的耗时任务
3、Activity的onCreate()和onResume()回调中尽量避免耗时的代码
2)OOM(out of memory)
产生原因
当前占用的内存加上我们申请的内存超过了Dalvik虚拟机最大的内存限制就会抛出该异常。

关于内存异常容易混淆的概念
内存溢出:就是oom异常。这个问题最严重。
内存抖动:短时间内大量的对象被创建,然后又被马上释放,这个问题相较那两者较轻。
内存泄漏:内存中的某些对象,已经无法被其它对象引用到了,但是它还引用到其它没有被回收的对象,导致GC无法产生作用,累积到一定程度,就会造成内存溢出

android guava: 

是java sdk的包装,简单有效

进程:

多线程,多进程分别应用场景----android基础
多线程:一个下载一个ui. 多进程:多个app:比如播放视频,音乐service停止--使用广播进程通信
android:process 应用实现多进程需要依赖于android:process这个属性
该进程属性可用于activities、services、content providers和broadcast receivers 和指定的进程中应该执行的特定组件。
,,,,,,

进程交互:两个视频播放,暂停前一个:context.sendOrderedBroadcast(new KeyEvent(KeyEvent.ACTION_DOWN),null)
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

 loadLibrary动态库加载过程分析

动态库加载程,调用栈如下:

System.loadLibrary()
  Runtime.loadLibrary()
    Runtime.doLoad()
      Runtime_nativeLoad()
          LoadNativeLibrary()
              dlopen()
              dlsym()
              JNI_OnLoad()

System.loadLibrary()和System.load()都用于加载动态库,loadLibrary()可以方便自动加载依赖库,load()可以方便地指定具体路径的动态库。对于loadLibrary()会将将xxx动态库的名字转换为libxxx.so,再从/data/app/[packagename]-1/lib/arm64,/vendor/lib64,/system/lib64等路径中查询对应的动态库。无论哪种方式,最终都会调用到LoadNativeLibrary()方法,该方法主要操作:

  • 通过dlopen打开动态共享库;
  • 通过dlsym获取JNI_OnLoad符号所对应的方法;
  • 调用该加载库中的JNI_OnLoad()方法。

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

老罗android之旅 前言 · 老罗的Android之旅(总结) · 看云---书《深入理解andrid内核》开源,内容非常全,ppt写的好,全书写的一般

 Android tips: https://blog.csdn.net/fdsafwagdagadg6576/article/details/110873613

Override 重写基类hansh

不加是怎么样的?

如果你不加@Override,则编译器将不会检测出错误,而是会认为你为子类定义了一个新方法:oncreate。

调试

It has a full gradle build for the first time , it is a long time.
run ---attach debugger to android process --- polycom.service.legacyapi (polycom.service.facade)--set breakpoint
debug window to debug.


how to see java log:
logcat window can see trace and log.info log output
how to see c++ log:
/data/log

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值