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帧中相同的数据
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com