Android应用开发基本知识点汇总

Activity

一 生命周期
  1. 4种状态  running / paused / stopped / killed
  2. 生命周期   
    1. Activity启动  onCreate -> onStart -> onResume
    2. 点Home返回主界面  onPause -> onStop
    3. 再次回到原Activity   onRestart -> onStart -> onResume
    4. 退出Activity   onPause -> onStop -> onDestroy
  3. 进程优先级     前台/可见/服务/后台/空

二 任务栈

三 启动模式
  1. standard
  2. singleTop  栈顶复用
  3. singleTask 栈内复用
  4. singeInstance 

scheme跳转协议
服务器可以定制化告诉App跳转哪个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面

Fragment

一 第五大组件
  1. 为什么是第五大组件  Fragment相对Activity更节省内存,切换更舒适
  2. Fragment加载到Activity的两种方式
    1. 静态加载 xml
    2. 动态加载 fragmentTransaction.add(id, fragment, “name”);  .commit;
  3. FragmentPagerAdapter与FragmentStatePagerAdapter
    • FragmentStatePagerAdapter在切换时回收内存,适合页面较多的情况
    • FragmentPagerAdapter并没有回收内存,只是detach了Activity

二 生命周期
onAttach -> onCreate -> onCreateView -> onViewCreated -> onActivityCreated -> onStart -> onResume
-> onPause -> onStop -> onDestroyView -> onDestroy -> onDetach 
先创建Activity后创建Fragment,先销毁Fragment后销毁Activity

三 Fragment之间的通信
  1. Fragment调用Activity     getActivity
  2. Activity调用Fragment     接口回调
  3. Fragment调用Fragment方法       findFragmentById

四 FragmentManager
  1. replace
  2. add
  3. remove

Service

一 应用场景,与Thread区别

  1. Service是什么      后台长时间运行,没有用户界面,运行在主线程,不能有耗时操作
  2. Service与Thread区别        Activity难以与Thread交互,尤其当Activity销毁以后

二 开启Service的两种方式

  • StartService
            onCreate -> onStartCommand -> onBind -> onDestroy
            onStartCommand  return START_STICKY;
            startService(intent);  stopService(intent);
  • BindService

Broadcast

一 广播
  1. 定义
  2. 场景    可在同一个App多个进程间消息传递,可在不同App间消息传递
  3. 种类    Normal, System有序广播, Local本地广播

二 实现方式
  1. 静态注册   注册完一直运行
  2. 动态注册   跟随Activity生命周期

三 实现机制

四 本地广播 LocalBroadcastManager
      由于之前的广播都是全局的,所有应用程序都可以接收到,这样就很容易会引起安全性的问题,比如说我们发送一些携带关键性数据的广播有可能被其他的应用程序截获,或者其他的程序不停地向我们的广播接收器里发送各种垃圾广播。
  为了能够简单地解决广播的安全性问题,Android引入了一套本地广播机制,使用这个机制发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接收来自应用程序发出的广播,这样所有的安全性问题就都不存在了。

异步消息处理

Handler

子线程发送消息, 让主线程更新UI
handler使用方法 post(runnable)与sendMessage(message)
handler内存泄漏解决办法:1. handler改为静态内部类  2.handler内部持有Activity外部弱引用 
3. mHandler.removeCallback() 

HandlerThread

多次创建销毁线程很耗费系统资源
本质上是线程, 继承自Thread,同时自己内部拥有Looper对象,可以进行Looper循环
串行队列,不能同时多任务处理,需要等待
handlerThread = handler + thread + looper

AsyncTask

本质上封装了线程池和Handler
传入三个参数 xxxAsyncTask extends AsyncTask<Integer, Integer, String> 使用参数,进度参数,结果参数
onPreExecute  在UI线程里执行
doInBackground  返回参数传给onPostExecute,中间publishProgress(i)中的参数传给onProgressUpdate
onProgressUpdate   在UI线程里执行
onPostExecute   在UI线程里执行
xxxAsyncTask.cancel()
并行or串行?为了线程池稳定,系统默认串行,一般建议串行,用xxxAsyncTask.executeOnExecutor执行并行

IntentService

IntentService是串行的
onHandleIntent 执行耗时操作
IntentService内部封装了HandlerThread框架,利用HandlerThread进行异步消息传递


WebView

  1. API16之前,没有限制WebView.addJavascriptInterface(),攻击者利用反射可执行任意Java对象的方法。
  2. onDestroy销毁WebView时,先要从父视图里remove WebView, 再调用WebView.removeAllViews()和WebView.destroy(),避免内存泄漏,WebView中的Context使用弱引用。
  3. jsbridge 通过JS构建起的桥
  4. WebView硬件加速导致页面渲染问题

Binder

Linux的进程间通信有Pipe, Socket,共享内存,信号量,信号,报文。
但是出于性能和安全考虑,Android引入了Binder机制。
Binder驱动位于内核空间,两个位于用户空间的进程间的通信,必须使用到Linux系统调用。
Binder对象是一个跨进程通信的对象,由Binder驱动实现。



进程通过Binder驱动向Service Manager注册,Service Manager维护一张表。
进程A从Service Manager里查询进程B,Service Manager返回一个代理对象,
代理对象通过Binder驱动实现,将结果返回给Service Manager。


Android构建

  1. 将资源文件通过aapt编译生成R.java,将aidl文件通过aidl编译生成Java接口
  2. 将App源码 + R.java + aidl的Java接口,通过Java编译器生成.class字节码文件
  3. 将.class通过dex生成.dex文件(虚拟机Dalvik可执行文件)
  4. 将.dex + 其它未编译文件通过apkbuilder生成apk
  5. 将apk通过签名工具jarsigner进行签名
  6. 将apk通过zipalign进行对齐操作,节省内存开销,减少apk大小


OKHttp

使用方法
  1. 创建一个OKHttpClient对象
  2. 创建一个Request对象(通过内部类Builder调用生成)
  3. 创建一个Call对象,调用execute(同步请求) / enqueue(异步请求

WebSocket心跳原理
  • 心跳包中可能会携带数据
  • 当收到Ping帧的时候需要立即返回一个Pong帧
  • 在连接建立之后,随时都可以发送Ping帧
  • 心跳是用来测试链接是否存在和对方是否在线
  • 在响应Ping帧的的Pong帧中,必须携和被响应的Ping帧中相同的数据


其他要点

  • App架构设计
  • MVC / MVP / MVVP 各自优缺点与应用
  • 框架选型,包括网络框架,图片框架,总线框架等
  • 第三方库选型,包括推送,定位,统计,图表等
  • compiledSDK / minimunSDK / targetSDK 尤其是targetSDK
  • 屏幕适配的各种方案,包括dp/sp,图片, 静态布局注意点,动态布局等
  • 网络安全技术,包括数据存储,数据加密(哈希,对称,非对称),HTTPS


  • 9
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android 应用开发知识点主要包括以下几个方面: 1. Java 编程基础:Android 应用开发主要使用 Java 语言进行编程,因此需要掌握 Java 基本语法、面向对象编程等知识点。 2. Android 框架:Android 提供了一套完整的应用开发框架,包括 Activity、Service、BroadcastReceiver、ContentProvider 等组件,以及布局、资源管理、界面设计等功能模块,需要掌握 Android 框架的使用方法。 3. UI 设计:Android 应用的用户界面设计非常重要,需要掌握 Android 的布局方式、控件使用、样式和主题等知识点,以及常见的 UI 设计模式和规范。 4. 数据存储:Android 应用需要存储数据,包括文件存储、数据库存储等方式,需要掌握 Android 的数据存储 API。 5. 网络编程:Android 应用需要与网络进行通信,需要掌握 Android 的网络编程 API,包括 HTTP、TCP/IP、WebSocket 等协议。 6. 多媒体处理:Android 应用需要处理多媒体数据,包括音频、视频、图像等,需要掌握 Android 的多媒体处理 API。 7. 性能优化:Android 应用需要考虑性能问题,包括应用启动时间、响应时间、内存占用等方面,需要掌握 Android 应用优化的方法和技巧。 8. 测试和调试:Android 应用需要进行测试和调试,包括单元测试、集成测试、UI 测试等方面,需要掌握 Android 的测试和调试工具和方法。 以上是 Android 应用开发的主要知识点,需要根据具体的应用需求和开发场景进行深入学习和实践。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值