当前位置: 首页 > news >正文

网站开发设计师薪资涿州住房和城乡建设局网站

网站开发设计师薪资,涿州住房和城乡建设局网站,企业网站分析与优化,谈谈什么是网络营销目录 一 概述二 生命周期2.1 启动服务startService()2.2 绑定服务bindService()2.3 先启动后绑定2.4 先绑定后启动 三 使用3.1 本地服务(启动式)3.2 可通信的服务(绑定式)3.3 前台服务3.4 IntentService 总结参考 一 概述 Servic…

目录

    • 一 概述
    • 二 生命周期
      • 2.1 启动服务startService()
      • 2.2 绑定服务bindService()
      • 2.3 先启动后绑定
      • 2.4 先绑定后启动
    • 三 使用
      • 3.1 本地服务(启动式)
      • 3.2 可通信的服务(绑定式)
      • 3.3 前台服务
      • 3.4 IntentService
    • 总结
    • 参考

一 概述

Service组件一般用来执行长期在后台的任务,如播放音乐、直播、下载文件等。

二 生命周期

官方图,一图解千言
在这里插入图片描述
两种使用Service的方法,执行不同的生命周期。

2.1 启动服务startService()

调用startService方法启动,多次启动onCreate只一次,onStartCommand会多次;
需要手动停止,调用stopService方法或stopItSelf。

2.2 绑定服务bindService()

调用bindService方法绑定,一次unBindService就能结束服务;如果多次调用unBindService,会出错。
当绑定的对象销毁时,自动解绑;绑定的对象也可以调用unBindService来进行主动解绑。

2.3 先启动后绑定

onCreate -> onStartCommand -> onBind -> onUnBind -> onDestroy

2.4 先绑定后启动

onCreate -> onBind -> onStartCommand -> onUnBind -> onDestroy

三 使用

都是Compose写的,很简陋,ui部分就不贴出来了。

3.1 本地服务(启动式)

两个按钮,一个启动服务,一个停止服务。
思路:
1.继承Service重写方法
2.注册Service
3.使用启动和停止方法

部分代码:

class MyService: Service() {private val mBinder = MyBinder()override fun onCreate() {println("MyService onCreate")super.onCreate()}override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {println("MyService onStartCommand")return super.onStartCommand(intent, flags, startId)}override fun onBind(p0: Intent?): IBinder? {println("MyService onBind")return mBinder}override fun onUnbind(intent: Intent?): Boolean {println("MyService onUnbind")return super.onUnbind(intent)}override fun onDestroy() {println("MyService onDestroy")super.onDestroy()}class MyBinder: Binder() {fun getServiceMethod() {println("this is service method")}}}
  <service android:name=".MyService"></service>

多次点击启动,再多次点击停止后结果如下,没有问题。
在这里插入图片描述

3.2 可通信的服务(绑定式)

思路:
1.同样先继承一个服务,但是多了一个自定义内部类继承binder如MyBinder,并自定义需要的方法,在onBind方法返回的时候return MyBinder的实例
2.注册Service
3.初始化ServiceConnection 实例,并在方法里将service转成MyBinder类型,然后可以执行类的方法。
4.使用绑定和启动方法
部分代码:

val connection: ServiceConnection = object : ServiceConnection {override fun onServiceConnected(name: ComponentName?, service: IBinder?) {println("onServiceConnected")val binder = service as MyService.MyBinderbinder.getServiceMethod()}override fun onServiceDisconnected(name: ComponentName?) {println("onServiceDisconnected")}}context.bindService(intent,connection,BIND_AUTO_CREATE)context.unbindService(connection)

多次点击,和启动式不同,只会执行onBind一次,解绑只能一次,第二次就报错退出。
在这里插入图片描述

3.3 前台服务

不同之处在于通知栏会显示服务;优先级比较高,不会由于系统内存不足而被回收;而后台服务会。

部分代码

val notificationIntent = Intent(this, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(this,0,notificationIntent,PendingIntent.FLAG_IMMUTABLE)
val builder = NotificationCompat.Builder(this, "channel_1")builder.setContentTitle("我是ServiceDemo的前台服务")builder.setContentText("今天2024.07.24提前下班")builder.setSmallIcon(R.mipmap.ic_launcher)builder.setContentIntent(pendingIntent)val notification = builder.build()startForeground(1, notification)

注意:
从Android 8.0(API 级别 26)开始,所有通知都必须通过通知渠道发送。通知渠道允许用户为不同类型的通知设置偏好,比如是否显示通知、是否播放声音、是否振动等。

从Android 13(API级别33)开始,对前台服务的管理变得更加严格,以改善用户体验和系统资源的管理。在Android 14(API级别34)中,这一要求被进一步强调。如果你的应用的targetSdkVersion设置为34或更高,那么在调用Service.startForeground()方法之前,你必须在应用的AndroidManifest.xml文件中的元素上明确指定foregroundServiceType属性。
还要配置权限和通知渠道。
bulider的配置也是缺一不可才会显示具体效果

<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/><service android:name=".MyService"android:foregroundServiceType="specialUse">
</service>

效果:
在这里插入图片描述

3.4 IntentService

继承自Service,有一个工作线程来执行耗时任务;异步任务执行是按顺序的。会自动停止,不需要手动。
而传统的Service在主线程,不能执行耗时任务。

被弃用了,懒得学了;需要的时候再看看。
适用场景有离线下载任务等-。

总结

  • Service有两种使用模式
  • Service可以在后台也可以到前台
  • Service在主线程,不能执行耗时操作

参考

https://blog.csdn.net/JMW1407/article/details/122347723

http://www.yayakq.cn/news/405668/

相关文章:

  • 做外贸需要关注的网站有什么问题北京英文网站建设的原则
  • 网站建设实训报告要求互联网公司排名类比
  • 沧州网站建设专业定制wordpress怎么集成码支付宝
  • html网站首页网络设计基本原则
  • seo与网站优化高校教学网站建设
  • 烟台住房和城乡建设局网站辽宁移动惠生活app官方版
  • 网站建设完成后 下一步做什么hao123主页下载安装
  • 广州微信网站制作外国设计网站推荐
  • 简单网站建设教学视频长沙网站建设 个人
  • 网站开发三端指哪三端扬中网站建设好么
  • 郑州网站建站网站怎么样做企业商城网站要多少钱
  • 网站 业务范围做网站的时候遇到的问题
  • 网站关键词被百度屏蔽怎么办SEO案例网站建设
  • 网站的头尾和导航的公用文件营销网站建设联系方式
  • 永兴城乡住房建设部网站天津做推广的公司
  • 网站 备案 拍照重庆市建筑工程信息网官网
  • 简洁大气企业网站源码网络宣传的方法有哪些
  • 外贸网站交易平台如何在微信内做网站
  • 怎样选择网站建设公司晋城建设路网站
  • 关键词排名优化软件策略东莞百度seo哪家好
  • 重庆帝一网络网站建设专家企业网页制作教程和流程
  • 网站幻灯片效果代码苏州做网站设计的公司
  • 江西省上饶市建设局网站wordpress群发
  • 眉山网站优化网站暂时关闭 seo
  • 怎么免费建设网站如何建立一家公司网站
  • 外贸网站建设需要多少钱反邪手机网站建设方案
  • 企业做网站设置哪些模块建筑资料哪个网最全
  • 长沙网站建设公司排行榜wordpress 分类 列表页
  • 申请网站的域名一个简单鲜花的html网页
  • 做网站是怎么赚钱吗烟台建设信息网站