首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android】期末简答题

onDestroy()这个方法在活动销毁之前调用,之后活动状态将变为销毁状态。 onRestart()这个方法在活动由停止状态变为运行状态之前调用,也就是活动重新启动了。...在前台生存期内,活动总是处于运行状态,此时活动可以和用户进行相互,我们平时看到和接触最多这个状态下活动。 3.活动在生命周期中最多中能有几种状态?...即使应用退出,服务不会停止。当应用进程被杀死时(例如一键清理),服务便会停止。 13.本地服务与远程服务优缺点各是什么?...另外一种 bindService() 方法意思是,把这个Service 和调用 Service 客户类绑起来,如果调用这个客户类销毁,Service 会被销毁。...调用者可以通过调用unbindService方法来停止服务,这时候Srevice就会调用onUnbind->onDestroyed方法。

95660

Carson带你学Android:Service史上最全面解析

简介 定义:服务,是Android四大组件之一, 属于 计算型组件 作用:提供 需在后台长期运行服务 如:复杂计算、音乐播放、下载等 特点:无用户界面、在后台运行、生命周期长 2....生命周期 具体请文章:Android:Service生命周期最全面解析 3. 类型 Service可按照运行地点、运行类型 & 功能进行分类,具体如下: 3.1 具体分类 3.2 详细介绍 4....其他思考 5.1 Service 与 Thread区别 结论:Service 与 Thread 无任何关系 之所以有不少人会把它们联系起来,主要因为Service后台概念 后台:后台任务运行完全不依赖...UI,即使Activity销毁 / 程序关闭,只要进程还在,后台任务就可继续运行 关于二者异同,具体如下图: 注:一般会将 Service 和 Thread联合着用,即在Service中再创建一个子线程...带你学Android:页面活动-Activity Carson带你学Android:广播-BroadcastReceiver Carson带你学Android:服务-Service Carson带你学

35230
您找到你想要的搜索结果了吗?
是的
没有找到

从面试官角度看Handler:掌握技巧,事半功倍!

参考简答: Handler在Android中主要有以下作用: 线程间通信:通过Handler,不同线程之间可以安全地传递消息,实现数据交换。...出发点: 强调HandlerThread便利性和在特定场景下优势,例如在需要长时间运行后台任务中。...通过HandlerThread,可以轻松地在新线程中执行一系列任务。 使用场景: 后台任务:当需要在后台执行长时间运行任务时,可以使用HandlerThread,避免阻塞主线程。...使用WeakReference:将外部类通过WeakReference传递给Handler,使得外部类可以垃圾回收。...结语 通过深入研究Android Handler技术,我们不仅能够更好地应对面试中高级问题,能在实际开发中更加熟练地运用Handler进行线程间通信和任务调度。

28110

Art of Android Development Reading Notes 11

Android主线程主要处理和界面相关事情,而子线程则往往用于执行耗时操作。线程创建和销毁开销较大,所以如果一个进程要频繁地创建和销毁线程的话,都会采用线程池方式。...(2)在Android中除了Thread,还有HandlerThread、AsyncTask以及IntentService等都扮演着线程角色,只是它们具有不同特性和使用场景。...FutureTask插入到任务队列tasks中,如果这个时候没有正在活动AsyncTask任务,那么就会执行下一个AsyncTask任务,同时当一个AsyncTask任务执行完毕之后,AsyncTask...IntentService适合执行一些高优先级后台任务,这样不容易系统杀死。...4.如果步骤3中线程数量已经达到线程池规定最大值,那么就拒绝执行此任务,ThreadPoolExecutor会调用RejectedExecutionHandlerrejectedExecution方法来通知调用者

37920

使用kotlin协程提高app性能(译)

Android上,协程有助于解决两个主要问题: 管理长时间运行任务,否则可能会阻止主线程并导致应用冻结。 提供主安全性,或从主线程安全地调用网络或磁盘操作。...如果您应用程序为主线程分配了太多工作,那么应用程序可能会明显卡顿或运行缓慢。...由于ViewModel在配置更改(例如屏幕旋转)期间不会被销毁,因此您不必担心协同程序取消或重新启动。 范围知道他们开始每个协同程序。这意味着您可以随时取消在作用域中启动所有内容。...使用适用于Android体系结构KTX库组件,您还可以使用扩展属性viewModelScope来创建可以运行协同程序,直到ViewModel销毁。...启动一个协程 您可以通过以下两种方式之一启动协同程序: launch会启动一个新协程,并且不会将结果返回给调用者。 任何认为是“发射并忘记”工作都可以使用launch来开始。

2.3K10

Android开发之旅:进程与线程

他们还可以设置为不同应用程序组件运行在同一个进程中——假设这些应用程序共享同一个Linux用户ID且分配了同样权限。...当内存剩余较小且其它进程请求较大内存并需要立即分配,Android要回收某些进程,进程中应用程序组件会被销毁。当他们再次运行时,会重新开始一个进程。...当决定终结哪个进程时,Android会权衡他们对用户重要性相对权值。例如,与运行在屏幕可见活动进程相比(前台进程),它更容易关闭一个进程,它活动在屏幕是不可见(后台进程)。...因为用户界面必须很快地响应用户操作,所以活动寄宿线程不应该做一些耗时操作如网络下载。任何不可能在短时间完成操作应该分配到别的线程。...Android提供了做这些工作所有代码,这样我们可以专注于定义和执行RPC接口本身。 一个RPC接口仅包含方法。所有的方法同步地执行(本地方法阻塞直到远程方法执行完成),即使是没有返回值。

44010

浅谈Android 线程和线程池使用

Android 中主线程交 UI 线程,主要作用是运行四大组件以及处理它们和用户交互;子线程作业则是执行耗时任务。...Android线程形态 1、AsyncTask AsyncTask 是一种轻量级异步任务类,可以在线程池中执行后台任务,然后把执行进度和最终结果传递给主线程并在主线程中更新 UI, AsyncTask...但是在 Android 3.0 以及后续版本中,仍然可以通过 AsyncTask executeOnExecutor 方法来并行地执行任务。...Android线程池 线程池优点 重用线程池中线程,避免因为线程创建和销毁所带来性能开销; 能有效控制线程池最大并发数,避免大量线程之间因互相抢占系统资源而导致阻塞现象; 能够对线程进行简单管理...方法来通知调用者

1.2K20

Android Service完全解析,关于服务你所需知道一切(上)

我们还可以到手机应用程序管理界面来检查一下MyService是不是正在运行,如下图所示: ? 恩,MyService确实是正在运行即使内部并没有执行任何逻辑。...而Service我们最初理解时候,总会觉得它是用来处理一些后台任务,一些比较耗时操作可以放在这里运行,这就会让人产生混淆了。...即使Activity销毁,或者程序关闭,只要进程还在,Service就可以继续运行。比如说一些应用程序,始终需要与服务器之间始终保持着心跳连接,就可以使用Service来实现。...但是Service就不同了,所有的Activity都可以与Service进行关联,然后可以很方便地操作其中方法,即使Activity销毁了,之后只要重新与Service建立关联,就又能够获取到原有的...如果你希望Service可以一直保持运行状态,而不会由于系统内存不足原因导致回收,就可以考虑使用前台Service。

1.4K50

Android Service完全解析,关于服务你所需知道一切(上)

我们还可以到手机应用程序管理界面来检查一下MyService是不是正在运行,如下图所示: ? 恩,MyService确实是正在运行即使内部并没有执行任何逻辑。...而Service我们最初理解时候,总会觉得它是用来处理一些后台任务,一些比较耗时操作可以放在这里运行,这就会让人产生混淆了。...即使Activity销毁,或者程序关闭,只要进程还在,Service就可以继续运行。比如说一些应用程序,始终需要与服务器之间始终保持着心跳连接,就可以使用Service来实现。...但是Service就不同了,所有的Activity都可以与Service进行关联,然后可以很方便地操作其中方法,即使Activity销毁了,之后只要重新与Service建立关联,就又能够获取到原有的...如果你希望Service可以一直保持运行状态,而不会由于系统内存不足原因导致回收,就可以考虑使用前台Service。

79440

Android四大组件:Service史上最全面解析

基础知识 定义:服务,属于Android计算型组件 作用:提供需要在后台长期运行服务(如复杂计算、下载等等) 特点:长生命周期、没有用户界面、在后台运行 ---- 2....使用场景 通过上述描述,你应该对Service类型及其使用非常了解; 那么,我们该什么时候用哪种类型Service呢? 各种Service使用场景请看下图: ? 6....其他思考 6.1 Service和Thread区别 结论:Service和Thread之间没有任何关系 之所以有不少人会把它们联系起来,主要因为Service后台概念 后台定义:后台任务运行完全不依赖...UI,即使Activity销毁,或者程序关闭,只要进程还在,后台任务可以继续运行 其实二者存在较大区别,如下图: ?...:IntentService用法&源码 ---- 7.总结 本文对Service所有知识进行了全面解析(基础认识、生命周期、使用和应用场景 接下来会介绍继续介绍Android开发中相关知识,有兴趣可以继续关注

89820

23 个重难点突破,带你吃透 Service 知识点「长达 1W+ 字」

服务可由其他应用组件启动(如 Activity ),服务一旦启动将在后台一直运行即使启动服务组件( Activity )已销毁不受影响。...调用者可以通过调用 unbindService 方法来停止服务,这时候 Srevice 就会调用 onUnbind -> onDestroyed 方法。...如果先是 bind 了,那么 start 时候就直接运行 Service onStart 方法,如果先是 start ,那么 bind 时候就直接运行 onBind 方法。...如果仅仅只是为了开启一个后台任务那么可以使用 startService() 方法。...这些功能如果放到 Activity 中做的话,那么 Activity 退出销毁了的话,那这些功能也就停止了,这显然是不符合我们设计要求,所以要将他们放在 Service 中去执行。

90610

【建议收藏系列】:我打赌你一定没搞明白Activity启动模式!

所以说,即使有很多个Activity分别都是来自于不同应用程序Android系统仍然可以将它们无缝地结合到一起。那这一切是怎么实现呢?...等四大组件,其中每一个组件,都是可以跨应用复用,这就是android神奇之处。...(称其B应用)中组件(称其B组件)就可以了,但是这就引发了一个新问题,A组件运行在A应用中,B组件运行在B应用中,自然都不在同一个进程中,那么从B组件中返回时候,如何实现正确返回到A组件呢?...如果以这种方式启动Activity跨进程调用,在5.0之前新启动Activity实例会放入发送IntentTask顶部,尽管它们属于不同程序,这似乎有点费解看起来不是那么合理,所以在5.0...4:假如目前有两个任务栈,前台任务栈T4情况为AB,后台任务栈t4里存有CD,假设CD启动模式均为singleTask,现在由B去启动D,那么整个后台任务都会被切换到前台,这个时候整个栈就变成了ABCD

2.1K00

Android查缺补漏(线程篇)-- IntentService源码浅析

和Thread,我们都知道这两个东西都可以执行后台任务,但要注意是Service是跑在主线程中,如果不做特殊处理是会阻塞主线程,而IntentService正好弥补了这一点,在《Android查缺补漏...,想比而言单纯开启一个线程来执行后台任务,由于这个进程中没有活动四大组件,所以非常容易系统杀死。...其实在普通Service中开启一个线程能达到IntentService效果,只是这样我们用起来更方便,那么在Service中开启线程或者使用IntentService相比在Activity中开启线程有什么优势呢...而如果我们在Service中创建了线程,然后如果线程中任务没有执行完毕,我们可以让Service一直运行在后台去承载这个线程,这样的话我们以后在想操作这个线程的话就可以在外界通过bindService...方式再绑定这个Service,从而可以控制运行在这个Service中线程。

40540

笔记之Android架构组件-WorkManager

service一直用来做后台运行操作,包括一些保活,上传数据之类,这个后台运行弊端很多,比如耗电,比如设计用户隐私之类,谷歌对这些后台行为进行了一些处理,从Android Oreo(API 26...,并非杀死进程还可以继续执行任务),这个技术适用于在应用退出之后任务还需要继续执行需求,对于在应用退出之后任务需要终止需求,可以选择ThreadPool、AsyncTask。...,那么运行周期不能短与15分钟。...也就是说,如果某一个后台任务运行失败,或者取消,那么接下来后台任务就都得不到运行了。...如果我们需要逐步建立一个长期任务链,那么唯一工作序列会很有用,例如,照片编辑应用可能会让用户撤消一长串操作,每个撤销操作可能需要一段时间,但必须按正确顺序执行,在这种情况下,应用程序可以创建一个

87410

Android查缺补漏(线程篇)-- IntentService源码浅析

和Thread,我们都知道这两个东西都可以执行后台任务,但要注意是Service是跑在主线程中,如果不做特殊处理是会阻塞主线程,而IntentService正好弥补了这一点,在《Android查缺补漏...,想比而言单纯开启一个线程来执行后台任务,由于这个进程中没有活动四大组件,所以非常容易系统杀死。...其实在普通Service中开启一个线程能达到IntentService效果,只是这样我们用起来更方便,那么在Service中开启线程或者使用IntentService相比在Activity中开启线程有什么优势呢...而如果我们在Service中创建了线程,然后如果线程中任务没有执行完毕,我们可以让Service一直运行在后台去承载这个线程,这样的话我们以后在想操作这个线程的话就可以在外界通过bindService...方式再绑定这个Service,从而可以控制运行在这个Service中线程。

32020

我所理解Android 启动模式

等四大组件,其中每一个组件,都是可以跨应用复用,这就是android神奇之处。...虽然组件可以跨应用调用,但是一个组件所在进程必须是在组件所在Aplication进程中。...(称其B应用)中组件(称其B组件)就可以了,但是这就引发了一个新问题,A组件运行在A应用中,B组件运行在B应用中,自然都不在同一个进程中,那么从B组件中返回时候,如何实现正确返回到A组件呢?...standard.png 如果以这种方式启动Activity跨进程调用,在5.0之前新启动Activity实例会放入发送IntentTask顶部,尽管它们属于不同程序,这似乎有点费解看起来不是那么合理...singleTask3.png 4:假如目前有两个任务栈,前台任务栈T4情况为AB,后台任务栈t4里存有CD,假设CD启动模式均为singleTask,现在由B去启动D,那么整个后台任务都会被切换到前台

79970

Android查缺补漏(线程篇)-- IntentService源码浅析

和Thread,我们都知道这两个东西都可以执行后台任务,但要注意是Service是跑在主线程中,如果不做特殊处理是会阻塞主线程,而IntentService正好弥补了这一点,在《Android查缺补漏...,想比而言单纯开启一个线程来执行后台任务,由于这个进程中没有活动四大组件,所以非常容易系统杀死。...其实在普通Service中开启一个线程能达到IntentService效果,只是这样我们用起来更方便,那么在Service中开启线程或者使用IntentService相比在Activity中开启线程有什么优势呢...而如果我们在Service中创建了线程,然后如果线程中任务没有执行完毕,我们可以让Service一直运行在后台去承载这个线程,这样的话我们以后在想操作这个线程的话就可以在外界通过bindService...方式再绑定这个Service,从而可以控制运行在这个Service中线程。

39220

Android 优化——内存优化

Android 优化目录 ---- 优化意义 减少 OOM,提高应用稳定性。 减少卡顿,提高应用流畅度。 减少内存占用,提高应用后台运行存活率。 减少异常发生,减少代码逻辑隐患。...这种情况很容易发生在短时间内申请大量 对象时,并且它们在极少情况下能得到有效释放,这样会出现内存泄漏情况。 一旦达到了剩余内存阈值,垃圾回收活动就会启动。...比如 AsyncTask 或线程 new Runnable 都会有一个匿名内部类,因此它们对当前 Activity 都有一个隐式引用,如果 Activity 在销毁之前任务还未完成,那么将导致 Activity...忽略特定弱引用 实现自己 ExcludedRefs 忽略某些特定弱引用对象,不对其进行内存泄漏监视。...可以使用 IntentService,后台任务结束后会自动停止,从而极大程度上避免了 Service 内存泄漏可能性。

1.5K10
领券