Activity

一生命周期

4种状态running/paused/stopped/killed

生命周期

Activity发动onCreate->onStart->onResume

点Home回来主界面onPause->onStop

再次回到原ActivityonRestart->onStart->onResume

退出ActivityonPause->onStop->onDestroy

进程优先级前台/可见/服务/后台/空

二使命栈

三发动形式

standard

singleTop栈顶复用

singleTask栈内复用

singeInstance

四scheme跳转协议

服务器能够定制化告知App跳转哪个页面,能够经过通知栏音讯定制化跳转页面,能够经过H5页面跳转页面

Fragment

一第五大组件

为什么是第五大组件Fragment相对Activity更节约内存,切换更舒适

Fragment加载到Activity的两种方式

静态加载xml

动态加载fragmentTransaction.add(id,fragment,“name”);.commit;

FragmentPagerAdapter与FragmentStatePagerAdapter

FragmentStatePagerAdapter在切换时收回内存,合适页面较多的状况

FragmentPagerAdapter并没有收回内存,只是detach了Activity

二生命周期

onAttach->onCreate->onCreateView->onViewCreated->onActivityCreated->onStart->onResume

->onPause->onStop->onDestroyView->onDestroy->onDetach

先创立Activity后创立Fragment,先毁掉Fragment后毁掉Activity

三Fragment之间的通讯

Fragment调用ActivitygetActivity

Activity调用Fragment接口回调

Fragment调用Fragment办法findFragmentById

四FragmentManager

replace

add

remove

Service

一运用场景,与Thread区别

Service是什么后台长期运行,没有用户界面,运行在主线程,不能有耗时操作

Service与Thread区别Activity难以与Thread交互,尤其当Activity毁掉以后

二敞开Service的两种方式

StartService

onCreate->onStartCommand->onBind->onDestroy

onStartCommandreturnSTART_STICKY;

startService(intent);stopService(intent);

BindService

Broadcast

一播送

定义

场景可在同一个App多个进程间音讯传递,可在不同App间音讯传递

品种Normal,System有序播送,Local本地播送

二完成方式

静态注册注册完一向运行

动态注册跟从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

传入三个参数xxxAsyncTaskextendsAsyncTask运用参数,进度参数,成果参数

onPreExecute在UI线程里履行

doInBackground回来参数传给onPostExecute,中心publishProgress(i)中的参数传给onProgressUpdate

onProgressUpdate在UI线程里履行

onPostExecute在UI线程里履行

xxxAsyncTask.cancel()

并行or串行?为了线程池安稳,系统默认串行,一般建议串行,用xxxAsyncTask.executeOnExecutor履行并行

IntentService

IntentService是串行的

onHandleIntent履行耗时操作

IntentService内部封装了HandlerThread框架,利用HandlerThread进行异步音讯传递

WebView

API16之前,没有限制WebView.addJavascriptInterface(),攻击者利用反射可履行任意Java目标的办法。

onDestroy毁掉WebView时,先要从父视图里removeWebView,再调用WebView.removeAllViews()和WebView.destroy(),防止内存泄漏,WebView中的Context运用弱引用。

jsbridge经过JS构建起的桥

WebView硬件加速导致页面渲染问题

Binder

Linux的进程间通讯有Pipe,Socket,共享内存,信号量,信号,报文。

但是出于功能和安全考虑,Android引入了Binder机制。

Binder驱动位于内核空间,两个位于用户空间的进程间的通讯,有必要运用到Linux系统调用。

Binder目标是一个跨进程通讯的目标,由Binder驱动完成。

进程经过Binder驱动向ServiceManager注册,ServiceManager维护一张表。

进程A从ServiceManager里查询进程B,ServiceManager回来一个署理目标,

署理目标经过Binder驱动完成,将成果回来给ServiceManager。

Android构建

将资源文件经过aapt编译生成R.java,将aidl文件经过aidl编译生成Java接口

将App源码+R.java+aidl的Java接口,经过Java编译器生成.class字节码文件

将.class经过dex生成.dex文件(虚拟机Dalvik可履行文件)

将.dex+其它未编译文件经过apkbuilder生成apk

将apk经过签名东西jarsigner进行签名

将apk经过zipalign进行对齐操作,节约内存开支,削减apk巨细

OKHttp

运用办法

创立一个OKHttpClient目标

创立一个Request目标(经过内部类Builder调用生成)

创立一个Call目标,调用execute(同步恳求)/enqueue(异步恳求)

WebSocket心跳原理

心跳包中或许会带着数据

当收到Ping帧的时候需求立即回来一个Pong帧

在连接建立之后,随时都能够发送Ping帧

心跳是用来测验链接是否存在和对方是否在线

在呼应Ping帧的的Pong帧中,有必要携和被呼应的Ping帧中相同的数据

android开发基本知识,Android应用开发基本知识点汇总相关推荐

  1. web前端开发基础知识_前端开发是什么?学前端开发需要学什么语言?你想成为程序员吗?...

    Web前端是什么 前端的本质就是通过一定的程序代码来实现用户界面的ui 交互.可以认为用户在终端所看到的和所操作的都属于前端,也就是说分为渲染页面和处理用户操作两块. 前端开发是创建Web页面或app ...

  2. 安阳7中计算机绘画知识,七年级上册美术知识点汇总

    第一单元什么是美术 第一课富于创造力的造型艺术 1.美术作品的产生,一是源于对现实生活的感受,二是需要创造性的构思和独特的表现技巧. 2.1959年,画家傅抱石.关山月创作以<沁园春·雪> ...

  3. Python自动化开发基础 分布式监控系统开发实战 day8-李杰-专题视频课程

    Python自动化开发基础 分布式监控系统开发实战 day8-10994人已学习 课程介绍         从0基础开始讲解Python语法.流程控制.函数式编程.面向对象开发等重要的Python开发 ...

  4. Android蓝牙开发前序知识

    1.前言 作为Android工程师,对于蓝牙不应该仅仅停留在调用API的层面上,尽量多知道一些,也是技术的成长.本文多半来源于复制粘贴,但是从白话文到稍微技术性方面,也能较好的理解蓝牙方面的应用.由于 ...

  5. 【Bugly 技术干货】Android开发必备知识:为什么说Kotlin值得一试

    1.Hello, Kotlin Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 1 ...

  6. Android游戏开发基本知识

    Android游戏开发 手机游戏被业内人士称为继短信之后的又一座金矿.Android虽然基于Java,但是其虚拟机是基于寄存器的,速度得到了很大的提升,这为Android平台上开发游戏提供了坚强的后盾 ...

  7. Android 音视频开发相关知识

    音视频开发技能 要在Android上进行音视频开发,需要掌握以下技能: Android开发:首先,您需要掌握Android应用程序的基本开发技能,包括Java或Kotlin编程语言,Android S ...

  8. 安卓嵌入式开发教程!Android开发热门前沿知识,2年以上经验必看

    前言 近几年,Android 开发的套路日趋成熟,越来越多的 Android 工程师获得了「高级」的称号,也有不少人在参与公司的 App 从无到有再到火爆的整个开发过程中,顺理成章地拿到了 Leade ...

  9. Android开发基础知识

    Android 开发 1. Android基础知识 1.1 发展历程 1.2 Android系统体系架构 Android采用分层架构: Kernel层:Android平台的基础.有线程管理和内存管理等 ...

最新文章

  1. You might want to run 'apt-get -f install' to correct these: The following packages have unmet depen
  2. 泛域名解析怎么做php,nginx如何做泛域名解析
  3. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL,spring获取context
  4. php短信android,Android_Android短信操作常见协议和常用代码,content://sms/inbox 收件箱 conte - phpStudy...
  5. h5页面笔按下默认是拖动_屡屡刷屏的长页面H5原来是这样诞生的
  6. Spring框架中的Quartz定时任务使用笔记(通过@Scheduled注解的方式实现)
  7. 转换字符串为json对象的方法
  8. autoencoder自编码器原理以及在mnist数据集上的实现
  9. Java 进阶——单例模式
  10. OJ1087: 获取出生日期(多实例测试)(C语言)
  11. 腾讯PCG光影研究室招聘计算机视觉算法/实习生
  12. go 设置进程名_七天用Go写个docker(第六天)
  13. 多条件查表数据库如何查询
  14. 代理模式(自己实现源码)
  15. centos7快速搭建KMS服务器
  16. Laravel核心概念:服务容器(ServiceContainer),服务提供者(Service Provider),门面(Facade),契约(Contracts)
  17. Python语言画蓝色妖姬
  18. [Pandas] 数据合并 pd.merge
  19. 阿里巴巴高级技术专家 至简 聊工程师思维(配音版)
  20. 基于verilog 实现的DDS的发生器

热门文章

  1. Maven的Settings.xml配置文件解释
  2. AsyncHttpClien访问网络案例分析
  3. Javascript 事件冒泡处理
  4. java8 lambda表达式实现自定义用户组件,Don't Repeat Yourself
  5. ubuntu配置×××后,配置走×××的路线
  6. Linux CentOS 查看服务器信息命令及其它常用命令
  7. JSON为什么那样红(另有洞天)
  8. apache ,php,mysql的安装
  9. Javascript 仿Flash 图片切换 及 Flash 图片切换
  10. 世界时钟 软件_Clocker for Mac(世界时钟软件)