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

网站建设泉州效率网络企业网站建设基本原则

网站建设泉州效率网络,企业网站建设基本原则,一般网站隐蔽点么么进,一个网站建设哪家快本文梳理了activity与service通信的方法。注意:请注意服务需要在AndroidManifest中注册!!!请注意服务需要在AndroidManifest中注册!!!请注意服务需要在AndroidManifest中注册!&#…

本文梳理了activity与service通信的方法。

注意:请注意服务需要在AndroidManifest中注册!!!

           请注意服务需要在AndroidManifest中注册!!!

           请注意服务需要在AndroidManifest中注册!!!

一丶Activity使用Bind()绑定服务

  1. 定义自己的服务类

    package com.example.server_testimport android.app.Service
    import android.content.Intent
    import android.os.Binder
    import android.os.IBinderclass MyService: Service() {private val binder = MyBinder()/*** 注意使用inner,否则无法访问外部类*/inner class MyBinder : Binder(){fun getService(): MyService{return this@MyService}}// 当activity调用bingService绑定服务时时,这个方法会被调用override fun onBind(p0: Intent?): IBinder = binder// 获取数据fun getData(): String = "这是来自服务的数据!!!"override fun onCreate() {super.onCreate()}override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {return super.onStartCommand(intent, flags, startId)}override fun onDestroy() {super.onDestroy()}}
  2. 绑定服务

    package com.example.server_testimport android.content.ComponentName
    import android.content.Context
    import android.content.Intent
    import android.content.ServiceConnection
    import android.os.Bundle
    import android.os.IBinder
    import android.widget.Toast
    import androidx.activity.enableEdgeToEdge
    import androidx.appcompat.app.AppCompatActivity
    import androidx.core.view.ViewCompat
    import androidx.core.view.WindowInsetsCompat
    import com.example.server_test.databinding.ActivityMainBindingclass MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingprivate lateinit var service : MyServiceprivate val connection = object :ServiceConnection{override fun onServiceConnected(p0: ComponentName?, p1: IBinder?) {service = (p1 as MyService.MyBinder).getService()// 绑定成功后可以立即做某些事情?binding.testBtn.isEnabled = true}override fun onServiceDisconnected(p0: ComponentName?) {// 当服务断开连接时}}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)binding.testBtn.isEnabled = falsebindService(Intent(this, MyService::class.java), connection, Context.BIND_AUTO_CREATE)setupEvent()}private fun setupEvent(){binding.testBtn.setOnClickListener{// 从服务获取数据Toast.makeText(this, service.getData(), Toast.LENGTH_SHORT).show()}}override fun onDestroy() {super.onDestroy()unbindService(connection)}
    }

二、使用广播,service与activity通信

  1. 定义自己的服务类

    package com.example.server_testimport android.app.Service
    import android.content.Intent
    import android.os.Binder
    import android.os.Handler
    import android.os.IBinder
    import android.os.Looper
    import android.util.Logclass MyService: Service() {private val handler = Handler(Looper.getMainLooper())private val interval: Long = 5000 // 5秒private var isRunning = falseoverride fun onBind(p0: Intent?): IBinder? = null// 获取数据private fun getMessage(): String = "这是来自服务的数据!!!"// 发送广播消息fun sendMessage() {Log.d("send", "消息已发出")val intent = Intent("SERVICE_MESSAGE").setPackage("com.example.server_test")intent.putExtra("msg", getMessage())sendBroadcast(intent)}override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {if (!isRunning)startScheduledMessage()return START_STICKY}override fun onDestroy() {super.onDestroy()stopScheduledMessage()}// 启动定时任务private fun startScheduledMessage() {isRunning = truehandler.postDelayed(messageRunnable, interval)}// 停止定时任务private fun stopScheduledMessage() {isRunning = falsehandler.removeCallbacks(messageRunnable)}// 定时任务执行体private val messageRunnable = object : Runnable {override fun run() {if (isRunning) {sendMessage()handler.postDelayed(this, interval)}}}}
  2.  在activity定义接收器

    private val receiver = object : BroadcastReceiver() {override fun onReceive(context: Context?, intent: Intent?) {val data = intent?.getStringExtra("msg")// 可以在这里做一些事情Toast.makeText(this@MainActivity, data ?: "没有数据", Toast.LENGTH_SHORT).show()}}
  3. 注册接收器并启动服务

    package com.example.server_testimport android.annotation.SuppressLint
    import android.content.BroadcastReceiver
    import android.content.Context
    import android.content.Intent
    import android.content.IntentFilter
    import android.os.Build
    import android.os.Bundle
    import android.widget.Toast
    import androidx.annotation.RequiresApi
    import androidx.appcompat.app.AppCompatActivity
    import com.example.server_test.databinding.ActivityMainBindingclass MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingprivate val receiver = object : BroadcastReceiver() {override fun onReceive(context: Context?, intent: Intent?) {val data = intent?.getStringExtra("msg")// 可以在这里做一些事情Toast.makeText(this@MainActivity, data ?: "没有数据", Toast.LENGTH_SHORT).show()}}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)}@RequiresApi(Build.VERSION_CODES.TIRAMISU)@SuppressLint("UnspecifiedRegisterReceiverFlag")private fun setupServer(){val filter = IntentFilter("SERVICE_MESSAGE")registerReceiver(receiver, filter, Context.RECEIVER_NOT_EXPORTED)// 启动服务startService(Intent(this, MyService::class.java))}override fun onPause() {super.onPause()unregisterReceiver(receiver)}override fun onDestroy() {// 停止服务stopService(Intent(this, MyService::class.java))super.onDestroy()}
    }

三、使用回调

作者有事暂停更新

    http://www.dtcms.com/a/474492.html

    相关文章:

  1. 41.Shell Case选择 While循环
  2. 基于单片机的智能水箱温度液位控制系统设计
  3. 数字化转型—AI+制造业的十大应用场景
  4. Java-集合练习
  5. 新民正规网站建设价格咨询广州app开发价格表
  6. 适合用struts2做的网站钦州教育论坛网站建设
  7. 关于节约化建设网站的表态发言企业推广方式力荐隐迅推
  8. 北京备案网站莱芜58同城网
  9. JavaSE面向对象(中)
  10. 保健品网站源代码代理平台什么意思
  11. 做网站签了合同后不想做了办公室装修公司哪里好
  12. 网站建设和网络优化网站建设对网络营销有哪些影响
  13. wordpress导入网站文章西安seo专员
  14. 大学城网站开发公司深圳企业网页设计公司
  15. commons-configuration2(配置管理库)
  16. 处理Git错误:“invalid object [hash]”和“unable to read tree [hash]”
  17. MySQL数据库 常用命令整理
  18. 前端开发 - 实时智能回复
  19. 对电子商务网站建设与维护的总结wordpress多选展示表单
  20. 从零起步学习MySQL || 第二章:DDL语句定义及常见用法示例
  21. Oracle REST Data Services是什么?
  22. [吾爱大神原创工具] windows 多窗口同步软件(键+鼠) 20251011 更新
  23. TDengine 数学函数 COS 用户手册
  24. qfd 网站开发wordpress 上传主题 ftp
  25. 算法与数据结构——排序算法大全
  26. 吕口-反射薄利多销AI入口算法系统方案
  27. Python全方位指南:定义、应用与零基础入门实战
  28. Iperius Backup Full(备份恢复软件) 多语便携版
  29. 建站平台在线提交功能wordpress 访问慢
  30. 《深入理解Java虚拟机JVM高级特性与最佳实践》