BAT大咖助力Android面试3-service面试详解

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

三,service面试详解

service是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件,可由其他组件启动,一旦启动可在后台长时间运行,即使启动它的组件已经被销毁,也不会受影响。

1,service与Thread

参考自:https://blog.csdn.net/wei_chong_chong/article/details/52251193

1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。thread是由本应用程序托管。可以用 Thread 来执行一些异步的操作。可做耗时操作

2). Service:Service 是android的一种机制,系统的组件,它由系统进程托管(servicemanager)。当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。不可做耗时操作,如果要做,service中添加Thread去做

Thread的使用

典型的应用中,Thread可以在以下三个位置被创建,不同的位置,其生命周期不一样,所以,我们应该根据该Thread的目标生命周期来决定是在Service中创建Thread还是在Activity中创建它。

(1) 在Activity中被创建

这种情况下,一般在onCreate时创建,在onDestroy()中销毁,否则,Activity销毁后,Thread是会依然在后台运行着。

这种情况下,Thread的生命周期即为整个Activity的生命周期。所以,在Activity中创建的Thread只适合完成一些依赖Activity本身有关的任务,比如定时更新一下Activity的控件状态等

核心特点:该Thread的就是为这个Activity服务的,完成这个特定的Activity交代的任务,主动通知该Activity一些消息和事件,Activity销毁后,该Thread也没有存活的意义了。

(2)在Application中被创建

这种情况下,一般自定义Application类,重载onCreate方法,并在其中创建Thread,当然,也会在onTerminate()方法中销毁Thread,否则,如果Thread没有退出的话,即使整个Application退出了,线程依然会在后台运行着。

这种情况下,Thread的生命周期即为整个Application的生命周期。所以,在Application中创建的Thread,可以执行一些整个应用级别的任务,比如定时检查一下网络连接状态等等

核心特点:该Thread的终极目标是为这个APP的各个Activity服务的,包括完成某个Activity交代的任务,主动通知某个Activity一些消息和事件等,APP退出之后该Thread也没有存活的意义了。

以上这两种情况下,Thread的生命周期都不应该超出整个应用程序的生命周期,也就是,整个APP退出之后,Thread都应该完全退出,这样才不会出现内存泄漏或者僵尸线程。那么,如果你希望整个APP都退出之后依然能运行该Thread,那么就应该把Thread放到Service中去创建和启动了。

(3)在Service中被创建

这是保证最长生命周期的Thread的唯一方式,只要整个Service不退出,Thread就可以一直在后台执行,一般在Service的onCreate()中创建,在onDestroy()中销毁。

所以,在Service中创建的Thread,适合长期执行一些独立于APP的后台任务,比较常见的就是:在Service中保持与服务器端的长连接

2,service启动

(1),startService

  • 定义一个类继承service
  • 在manifest.xml文件中配置该service
  • 使用context的startService(Intent)方法启动该service
  • 不再使用时,调用stopService(Intent)方法停止该服务
  • onCreate首次创建服务执行,onStartCommand方法每次重启服务都会调用

(2),bindService

  • 创建BindService服务端,继承自Service并在类中,创建一个实现IBinder接口的实例对象并提供公共方法给客户端调用;
  • 从onBind()回调方法返回此Binder实例;
  • 在客户端中,从onServiceConnected()回调方法中接收Binder,并使用提供的方法调用绑定服务
  • 多个activity可以绑定一个服务
  • 绑定解除,服务销毁

android开发之service详解

BAT助力 全面升级Android面试-3android基础相关面试 一,Activity面试详解 1,activity的四种状态 2,activity的生命周期 3android进程优先级 4,activity启动模式 5,scheme 二,Fragment面试详解 1,Fragment为什么会被称为第五组件 2,Fragment加载到Activity的两种方式 3,FragmentPagerAdapter与FragmentStatePagerAda... 阅读详情

相关推荐

hongyangWeixinArticles中的面试宝典:BATAndroid面试题全解析

想要进入BAT(百度、阿里、腾讯)这样的一线互联网厂吗?hongyangWeixinArticles项目为你提供了完整的Android面试宝典!这个开源项目汇集了鸿洋公众号推送的所有技术文章,其中包含了量珍贵的Android面试资源和BAT面试题解析。无论你是Android新手还是有一定经验的开发者,这里都能找到提升面试竞争力的宝贵资料。😊 ## 🔥 为什么选择hongyangWei

gitblog_01136的博客 818

BAT助力 全面升级Android面试笔记》学习笔记

Activity相关Android进程优先级 前台:处于前台和用户交互的activity或者和前台activity绑定的service 可见:处于可见但并不是处于前台,用户不能点击的activity 服务:在后台开启service服务 后台:按home键 空:不属于前面4中的任何一种,随时杀掉 Android任务栈 standard:每次都会重新创建Activity实例,加到任务栈,不考虑复用 si

杜凯的博客 3498

android面试视频百度云盘,BAT面试之谈解密Android上(含百度云连接)

一丶概述去年8月下载的面试视频,现在才想起来看,金三银四刷起来本文为视频笔记和加深链接,希望对你有所帮助一丶课程介绍BAT助力 全面升级Android面试 二丶面试建议 三丶面试内容1.Activity四组件之一,Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。1)Ativity生命周期activity的四种状态running 活动状态,用户点击屏幕,屏...

weixin_42131861的博客 267

BAT助力 全面升级Android面试笔记 (自己补充)

https://blog.csdn.net/qq_23575921/article/details/78947051 原文 补充 Android任务栈 singletop(栈顶复用):Android系统内置的书签应用 singletask(栈内复用):商城首页,在分页中点了主页其他的分页全部出栈 scheme跳转协议 在不知道对方的包名,类名的情况下要打开对方,不如浏览器要打开其他的app,或者...

hukou6335490的博客 675

BAT厂所封杀的Android面试秘籍汇总(1)

代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。所以,长征路还长,家还是好好地做个务实的程序员吧。最后,小编这里有一系列Android提升学习资料,有兴趣的小伙伴们可以来看下哦~网上学习资料一堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取。

erhtre的博客 665

BAT厂所封杀的Android面试秘籍汇总

导语 今天我们要分享的是关于BAT厂经常问到的面试问题,而且还有Android进阶资料,包括但不限于架构设计、NDK、跨平台、底层源码等技术,这份资料全方位,多层次深得部分人的喜爱,很多人通过这份资料了解到了自己所欠缺的知识点,查漏补缺,以及面试专题给了家在面试时更多的底气 面试造航母,工作拧螺丝,这已经是程序员行业的普遍行情,如何在面试中游刃有余,这份资料将助你一臂之力。 需要这份手打资料的可以前往GitHub自行查阅。 这同时我也建立了一个答疑群,各位有什么需要解答的疑惑直接扔出来,群里..

Androidbye的博客 223

android scheme跳转_「干货」超全Android中高级面试复习纲,覆盖所有面试知识

文章目录如下:Activity面试题Fragment面试Service面试题Broadcast Receiver面试题WebView面试题Binder面试题Handler面试题AsyncTask面试题HandlerThread面试题IntentService面试题视图工作机制面试题事件分发机制面试题ListView面试Android项目构建面试题(由于篇幅太长,今天就先分享到这里)ANR面试题...

weixin_39790510的博客 206

2024年安卓最全怒刷Android面试100题,再也不担心不能吊打面试官了,硬件工程师面试题目

我们见过很多技术leader在面试的时候,遇到处于迷茫期的龄程序员,比面试官年龄都。这些人有一些共同特征:可能工作了7、8年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。不断奔跑,你就知道学习的意义所在!网上学习资料一堆,但如果学到的知识不成体系,遇到问题时只是浅尝

2401_84557521的博客 428

2024春招BAT面试真题详解,你还在犹豫看不看,别人已经学走了!

Android 详细知识点思维脑图(技能树)】我个人是做Android开发,已经有十来年了,目前在某创业公司任职CTO兼系统架构师。虽然 Android 没有前几年火热了,已经过去了会四组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。

2401_85112602的博客 674

2024年安卓最新「Android高级工程师」BAT面试基础题集合--Github标星6-5K,Android研发岗面试复盘总结

最后这里放上我这段时间复习的资料,这个资料也是偶然一位朋友分享给我的,里面包含了腾讯、字节跳动、阿里、百度2019-2021面试真题解析,并且把每个技术点整理成了视频和PDF(知识脉络 + 诸多细节)。还有高级架构技术进阶脑图、高级进阶架构资料帮助家学习提升进阶,也可以分享给身边好友一起学习。一起互勉~网上学习资料一堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!

2401_84545669的博客 1198

金九银十面试整理:BAT厂最爱问的Android核心面试百题详细解析!

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。这里会不断收集和更新Android基础相关的面试题,目前已收集100题。 面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责! 如果想变得优秀那就去看那些优秀的人在学什么,做什么,想尽一切办法和他们交流;多出去看看这个世界,然后把自...

weixin_44339238的博客 2775

Android组件之 Service,字节跳动面试是什么意思

找到一套好的视频资料,紧跟牛梳理好的知识框架进行学习。多练。(视频优势是互动感强,容易集中注意力)你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

2401_84007015的博客 752

抖音音视频开发,2021Android面试经验,附小技巧

前言 找工作还是需要家不要紧张,有我们干这一行的接触人本来就不多 难免看到面试官会紧张,主要是因为怕面试官问的问题到不上来,那时候不要着急 ,答不上了的千万不然胡扯一些,直接就给面试官说这块我还没接触到,以后如果工作当中遇到的话我可以很快的吧这个问题给解决了,但是我们有了这篇文章,就不一样了,基本上问的问题都有适当的看一下,到时候很快就可以拿到 offer 我在这里祝家工作顺利,天天开心 ~好了下面就是正题。 BAT面试专题 1、要做一个尽可能流畅的ListView,你平时在工作中如何进行优化的?

m0_57079376的博客 149

2024春招BAT面试真题详解,你还在犹豫看不看,别人已经学走了

2、 Java角度在Java中,非静态内部类和匿名类内部类都会潜在持有它们所属的外部类的引用,但是静态内部类却不会。对上述的示例进行分析,当MainActivity结束时,未处理的消息持有handler的引用,而handler又持有它所属的外部类也就是MainActivity的引用。这条引用关系会一直保持直到消息得到处理,这样阻止了MainActivity被垃圾回收器回收,从而造成了内存泄漏。**解决方法:**将Handler类独立出来或者使用静态内部类,这样便可以避免内存泄漏。

886

android物联网开发细致入门,写给Android开发的小程序布局指南

尤其是非计算机专业的同学,面试官一上来肯定是问你基础,要是基础表现不好很容易被扣上基础不扎实的帽子,常见的就那些,只要你平时认真思考过基本上面试是没太问题的。,全部都是精华中的精华,我能面试到现在2-2资深开发人员跟我整理的这本Android核心知识点有密不可分的关系,在这里本着共赢的心态分享给各位朋友。下面这份PDF是我翻阅了差不多3个月左右一些Android博主的博客从他们那里取其精华去其糟泊所整理出来的一些。节省家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

2401_84408092的博客 962

记联想公司的一次Android面试(2)

为什么很多程序员做不了架构师?1、良好健康的职业规划很重要,但多数人都忽略了2、学习的习惯很重要,持之以恒才是正解。3、编程思维没能提升一个台阶,局限在了编码,业务,没考虑过选型、扩展4、身边没有好的架构师引导、培养。所处的圈子对程序员的成长影响巨。金九银十面试季,跳槽季,整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

2401_83817418的博客 487

备战金九银十:BAT厂最爱问的Android核心面试百题详细解析!

是一个对外提供数据的接口,首先需要实现这个接口,然后重写方法,最后在清单文件定义的访问uri。是Service的子类,比普通的Service增加了额外的功能。先看Service本身存在两个问题:1.Service不会专门启动一条单独的进程,Service与它所在应用位于同一个进程中;2.Service也不是专门一条新线程,因此不应该在Service中直接处理耗时的任务;是Service的子类,比普通的Service增加了额外的功能。先看ServiceService不会专门启动一条单独的进程,

2401_84519859的博客 112

9次Android面试经验总结,斩获offer

BAT面试专题 1、要做一个尽可能流畅的ListView,你平时在工作中如何进行优化的? 2、对于Android 的安全问题,你知道多少 3、如何缩减APK包小? 4、Android与服务器交互的方式中的对称加密和非对称加密是什么? 5、设备横竖屏切换的时候,接下来会发生什么? 6、Android启动Service的两种方式是什么? 它们的适用情况是什么? 7、谈谈你对Android中Context的理解? 8、Service的onCreate回调在UI线程中吗? 9、请介绍下AsyncTask的内部实

m0_57205294的博客 115

Android面试总结Part1

根据慕课BAT助力 全面升级Android面试课程进行总结 参考整理自: https://blog.csdn.net/qq_23575921/article/details/78947051 https://www.jianshu.com/p/f85e83127e50   一、Activity 1、Activity的四种状态 running :活动状态。可以跟用户进行交互。位...

leelion6的博客 266
上一篇: BAT大咖助力Android面试2-Fragment面试详解
下一篇: BAT大咖助力Android面试4-Broadcast面试详解
superjunjin
博客等级 码龄17年 600粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值