zoukankan      html  css  js  c++  java
  • 定义一个远程服务,绑定本地服务

    class RemoteService : Service() {

    private var mBilder: MyBilder? = null

    override fun onCreate() {
    super.onCreate()
    if (mBilder == null) {
    mBilder = MyBilder()
    }
    }

    override fun onBind(intent: Intent): IBinder? {
    return mBilder
    }

    override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
    try {
    this.bindService(Intent(this@RemoteService, LocalService::class.java),
    connection, Context.BIND_ABOVE_CLIENT)
    } catch (e: Exception) {
    }
    return Service.START_STICKY
    }

    override fun onDestroy() {
    super.onDestroy()
    unbindService(connection)
    }

    private inner class MyBilder : GuardAidl.Stub() {
    @Throws(RemoteException::class)
    override fun wakeUp(title: String, discription: String, iconRes: Int) {
    if (Build.VERSION.SDK_INT < 25) {
    val intent = Intent(applicationContext, NotificationClickReceiver::class.java)
    intent.action = NotificationClickReceiver.CLICK_NOTIFICATION
    val notification = NotificationUtils.createNotification(this@RemoteService, title, discription, iconRes, intent)
    this@RemoteService.startForeground(13691, notification)
    }
    }
    }

    private val connection = object : ServiceConnection {
    override fun onServiceDisconnected(name: ComponentName) {
    val remoteService = Intent(this@RemoteService,
    LocalService::class.java)
    this@RemoteService.startService(remoteService)
    this@RemoteService.bindService(Intent(this@RemoteService,
    LocalService::class.java), this, Context.BIND_ABOVE_CLIENT)
    }

    override fun onServiceConnected(name: ComponentName, service: IBinder) {}
    }

    }

    /**
    * 通知栏点击广播接受者
    */
    class NotificationClickReceiver : BroadcastReceiver() {

    companion object {
    const val CLICK_NOTIFICATION = "CLICK_NOTIFICATION"
    }

    override fun onReceive(context: Context, intent: Intent) {
    if (intent.action == NotificationClickReceiver.CLICK_NOTIFICATION) {
    if (KeepLive.foregroundNotification != null) {
    if (KeepLive.foregroundNotification!!.getForegroundNotificationClickListener() != null) {
    KeepLive.foregroundNotification!!.getForegroundNotificationClickListener()?.foregroundNotificationClick(context, intent)
    }
    }
    }
    }
    }

  • 相关阅读:
    SOG Tactical Tomahawk F01T 飞虎
    90 压缩干粮 飞虎
    美国陆军国民警卫队不锈钢水瓶 ACU色 飞虎
    CentOS安装RabbitMQ
    如何将EXCEL表中的数据导入数据库中
    Silverlight中的WattingDialog
    WPF ProgressDialog
    DataGrid小扩展
    WPF报表控件
    Misc另外一个世界
  • 原文地址:https://www.cnblogs.com/ly570/p/11291189.html
Copyright © 2011-2022 走看看