Android Review -- 面试准备

载录自:https://developer.android.google.cn

多线程

  1. Processes and Application Lifecycle
  2. 进程和线程
    1. 进程
      1. 进程生命周期
    2. 线程
      1. 工作线程 >> AsyncTask
      2. 线程安全方法
    3. 进程间通信
  3. Sending operations to multiple threads
    1. Specify the code to run on a thread >> Runnable
    2. Create a manager for multiple threads >> IntentService / ThreadPoolExecutor
    3. Run code on a thread pool thread
    4. Communicate with the UI thread >> Handler
  4. Better performance through threading

补充内容

机制原理走读:

  1. AsyncTask、IntentService、HandlerThread、ThreadPoolExector
  2. Handler

Handler机制

  1. Android消息机制1-Handler(Java层)
  2. Android消息机制2-Handler(Native层)
  3. Android系统开发 – 核心篇: Handler机制

Looper >> MessageQueue >> Message >> Handler >> Looper

AsyncTask

  1. AsyncTask API
  2. 深入理解AsyncTask的工作原理
  3. AsyncTask的原理和缺点
  4. Handle configuration changes

WorkRunnable + FutureTask + SerialExecutor(默认串行) = ThreadPoolExector + Handler

ThreadPoolExector

  1. ThreadPoolExecutor API
  2. java线程池ThreadPoolExecutor类使用详解
  3. Java线程池ThreadPoolExecutor类源码分析

IntentService

  1. IntentService API >> 推荐 JobIntentService
  2. Android IntentService的使用和源码分析
  3. Android HandlerThread 源码分析

数据储存

  1. Storage overview
    1. SharedPreferences
    2. 内部存储 >> 默认是应用的私有文件
    3. 外部存储 >> getExternalStorageState()
      1. Save files on device storage
      2. Sharing files
    4. 数据库 >> sqlite3 >> Room框架
      1. Save data in a local database using Room
      2. Save data using SQLite
    5. 网络存储
      1. java.net.*
      2. android.net.*

补充内容

常用API走读:

  1. File / FileProvider
  2. SQLiteOpenHelper / Room ORM

网络编程

  1. Performing network operations
    1. Connect to the network >> HttpsURLConnection / AsyncTask
    2. Manage network usage
    3. Optimize network data usage
    4. Parse XML data
  2. Volley overview >> 适用数据量小、通信频繁的网络操作。/ 图片加载
    1. Send a simple request
    2. Set up RequestQueue
    3. Make a standard request
    4. Implement a custom request

补充内容

机制原理走读:

  1. HttpURLConnection / HttpsURLConnection

  2. volley、okhttp等常用框架走读

  3. Http、Socket、TCP/IP

  4. HttpURLConnection API

  5. HttpURLConnection 源码分析

NDK开发

  1. NDK 入门指南

自定义View

  1. Android自定义View注意事项
  2. Android自定义View之Canvas
  3. Android自定义View之Paint绘制文字和线
  4. Android自定义View之Window、ViewRootImpl和View的三大流程
  5. Android自定义View之双缓冲机制和SurfaceView
  6. Android自定义View之事件分发机制总结

AS 调试手段

Capture and read bug reports

Reading bug reports

  1. Crashes
    1. Java (Throwable) >> 空值、传参非法、复杂的多线程交互 >> stack trace >> 问题复现
      1. Memory errors >> OutOfMemoryError >> 开一个低内存的模拟器
      2. Networking exceptions >> UnknownHostException >> emulator 模拟延时,或者切换成飞行模式等
    2. Diagnosing native crashes (signal)
      1. null指针、tombstone >> addr2line、vmlinux
  2. ANRs
    1. 触发条件:
      1. 在前台的Activity中,input event超过5s没有响应或者 BroadcastReceiver在10s内尚未执行完毕。
      2. Activity不在前台时,BroadcastReceiver在一定的时间内仍未处理完成。
    2. Diagnosing ANRs
      1. 主线程中,进行耗时的 I/O操作 >> Strict mode
      2. 主线程中,进行比较耗时的计算 >> Enable background ANR dialogs、Traceview、Pull a traces file
      3. 主线程中,同步等待Binder返回调用情况,而这个调用又是比较耗时的。
      4. 主线程中,同步阻塞等待一个操作,而这个操作又是在其他线程中完成。
      5. 主线程和其他线程发生了死锁。
    3. Fix the problems
      1. Slow code on the main thread >> trace中具体分析超过5s的内容
      2. IO on the main thread >> network、I/O操作,统一放到工作线程中。
      3. Lock contention / Deadlocks >> mutex hold
      4. Slow broadcast receivers >> IntentService >> 工作线程
  3. 内存泄漏
    1. Overview of memory management >> 垃圾回收机制
    2. Manage your app’s memory
    3. View the Java heap and memory allocations with Memory Profiler

trace 分析:

  step1. 若对自己开发的应用做 trace分析的话,可以在代码中增加 trace跟踪接口。具体参考:Generate Trace Logs by Instrumenting Your App


  step2. 若是对以发生 ANR的应用进行 trace分析的话,一般直接取出 /data/anr/anr*文件

  step3. 利用 Traceview进行 trace分析。具体参考:Inspect trace logs with Traceview

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值