(1)android 多线程有几种实现方法:
问题提出
1)为何需要多线程?
2)多线程如何实现?
3)多线程机制的核心是啥?
4)到底有多少种实现方式?
2、问题分析
1)究其为啥需要多线程的本质就是异步处理,直观一点说就是不要让用户感觉到“很卡”。
eg:你点击按钮下载一首歌,接着该按钮一直处于按下状态,那么用户体验就很差。
2)多线程实现方式implements Runnable 或 extends Thread
3)多线程核心机制是Handler
4)提供如下几种实现方式
----------------------------------------
有以下几种方式:
1)Activity.runOnUiThread(Runnable)
2)View.post(Runnable) ;View.postDelay(Runnable , long)
3)Handler
4)AsyncTask
Android是单线程模型,这意味着Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行,所以你单纯的new一个Thread并且start()是不行的,因为这违背了Android的单线程模型。那么如何用好多线程呢?总结一下:
事件处理的原则:所有可能耗时的操作都放到其他线程去处理。
推荐讲解;https://www.cnblogs.com/chendu123/p/6081301.html
(2)android framework的框架及作用:
那么Framework层的作用就有2个。
- 用Java语言编写一些规范化的模块封装成框架,供APP层开发者调用开发出具有特殊业务的手机应用。
-
用Java Native Interface调用core lib层的本地方法,JNI的库是在Dalvik虚拟机启动时加载进去的,Dalvik会直接去寻址这个JNI方法,然后去调用。
-
总结:FramWork是给上层应用app层提供api方法和服务的应用框架层,可以称Framework层才真正是Java语言实现的层,包括三大核心功能viewsystem,ActivityManagerService.java,WindowManagerService.java ,正式因为framwork层里面的jni(java本地服务)和系统运行层里面的c++库的交互,所以才会从C/C++的底层慢慢向上变成了JAVA的开发语言
应用程序框架层包括活动管理器、位置管理器、包管理器、通知管理器、资源管理器、 电话管理器、窗口管理器、内容提供者、视图系统和XMPP服务十个部分
Activity Manager:用来管理应用程序生命周期并提供常用的导航回退功能。
Window Manager:提供一些我们访问手机屏幕的方法。屏幕的透明度、亮度、背景。
Content Providers:使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
View System:可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons), 甚至可嵌入的web浏览器。
Notification Manager:使得应用程序可以在状态栏中显示自定义的提示信息。
Package Manager:提供对系统的安装包的访问。包括安装、卸载应用,查询permission相关信息,查询Application相关信息等。
Telephony Manager:主要提供了一系列用于访问与手机通讯相关的状态和信息的方法,查询电信网络状态信息,sim卡的信息等。
Resource Manager:提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。
Location Manager:提供设备的地址位置的获取方式。很显然,GPS导航肯定能用到位置服务。
XMPP:可扩展通讯和表示协议。前身为Jabber,提供即时通信服务。例如推送功能,Google Talk。
链接:https://www.jianshu.com/p/ce80389be8b4