美文网首页
Android 相关

Android 相关

作者: 买辣条也想用券 | 来源:发表于2020-08-19 11:13 被阅读0次
    一、Activity的四种启动模式详解
    • 标准模式(standard)
    • 栈顶复用模式(singleTop)

      如果新启动的activity位于任务栈顶,则不会被重新创建,只会重新调用 onPause、onNewIntent、onResume方法,也就是说会重新走一遍前台的生命周期;

    • 栈内复用模式(singleTask)

      只存在唯一的实例,将该Activity实例之上的Activity被出栈,一般项目的MainActivity都设置为此模式,方便放回首页和清空中间Activity;

    • 单例模式(singleInstance)

      除了具有singleTask模式的所有特性外,还加强了一点,该Activity只能单独地位于一个任务栈中。

    • 标记属性

    属性 含义
    FLAG_ACTIVITY_SINGLE_TOP 指定启动模式为栈顶复用模式(SingleTop)
    FLAG_ACTIVITY_NEW_TASK 指定启动模式为栈内复用模式(SingleTask)
    FLAG_ACTIVITY_CLEAR_TOP 所有位于其上层的Activity都要移除,SingleTask模式默认具有此标记效果
    二、android开发中跨进程通信有几种方式
    • 在android SDK中提供了4种用于跨进程通讯的方式,Activity、Content Provider、Broadcast和Service。

    1、 Activity可以跨进程调用其他应用程序;
    2、Content Provider可以跨进程访问其他应用程序中的数据(以Cursor对象形式返回),当然,也可以对其他应用程序的数据进行增、删、改操 作;
    3、 Broadcast可以向android系统中所有应用程序发送广播,而需要跨进程通讯的应用程序可以监听这些广播;
    4、Service和Content Provider类似,也可以访问其他应用程序中的数据,但不同的是,Content Provider返回的是Cursor对象,而Service返回的是Java对象,这种可以跨进程通讯的服务叫AIDL服务。

    三、Service相关
    • Service两种启动方式 startService、 bindService 区别及生命周期
    1. startService: onCreate -> onStartCommand -> onDestory ,在多次调用startService的时候,onCreate不重复执行,但是onStartCommand会执行。startService调用了这后,会一直存在,直到其调用了stopService。
    2. bindService : onCreate -> onBind -> onUnbind -> onDestory,多次调用bindService,onCreate及onBind都只执行一次。它生命周期跟随其调用者,调用者释放的时候,必须对该Service解绑,当所有绑定全部取消后,系统即会销毁该服务。 bindService 的方式通过onServiceConnected方法,获取到Service对象,通过该对象可以直接操作到Service内部的方法,从而实现的Service 与调用者之间的交互。
    • Service绑定服务的三种实现方式,扩展Binder类、使用Messenger、使用AIDL
    服务Service与线程Thread的区别

    1,两者概念的迥异
    【1】Thread 是程序执行的最小单元,它是分配CPU的基本单位,android系统中UI线程也是线程的一种,当然Thread还可以用于执行一些耗时异步的操作。
    【2】Service是Android的一种机制,服务是运行在主线程上的,它是由系统进程托管。它与其他组件之间的通信类似于client和server,是一种轻量级的IPC通信,这种通信的载体是binder,它是在linux层交换信息的一种IPC,而所谓的Service后台任务只不过是指没有UI的组件罢了。
    2,两者的执行任务迥异
    【1】在android系统中,线程一般指的是工作线程(即后台线程),而主线程是一种特殊的工作线程,它负责将事件分派给相应的用户界面小工具,如绘图事件及事件响应,因此为了保证应用 UI 的响应能力主线程上不可执行耗时操作。如果执行的操作不能很快完成,则应确保它们在单独的工作线程执行。
    【2】Service 则是android系统中的组件,一般情况下它运行于主线程中,因此在Service中是不可以执行耗时操作的,否则系统会报ANR异常,之所以称Service为后台服务,大部分原因是它本身没有UI,用户无法感知(当然也可以利用某些手段让用户知道),但如果需要让Service执行耗时任务,可在Service中开启单独线程去执行。
    3,两者使用场景
    【1】当要执行耗时的网络或者数据库查询以及其他阻塞UI线程或密集使用CPU的任务时,都应该使用工作线程(Thread),这样才能保证UI线程不被占用而影响用户体验。
    【2】在应用程序中,如果需要长时间的在后台运行,而且不需要交互的情况下,使用服务。比如播放音乐,通过Service+Notification方式在后台执行同时在通知栏显示着。

    四、Handler通信机制的原理解析
    五、EventBus 原理解析
    六、ARouter 原理解析
    七、Glide 原理解析
    八、热修复原理解析
    九、Flutter混合开发(交互通信)
    十、HTTPS 原理及工作机制
    十一、Android 开发中的错误解决方案

    相关文章

      网友评论

          本文标题:Android 相关

          本文链接:https://www.haomeiwen.com/subject/ijekjktx.html