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

jsp获取网站域名深圳中小企业网站建设

jsp获取网站域名,深圳中小企业网站建设,网站域名在哪备案,美食网站开发毕业设计的主要内容在Android中也可以像pc一样开启多进程,这在android的编程中通常是比较少见的,以为在一个app基本上都是单进程工作就已经足够了,有一些特殊的场景,我们需要用多进程来做一些额外的工作,比如下载工作等。 在Android的An…

在Android中也可以像pc一样开启多进程,这在android的编程中通常是比较少见的,以为在一个app基本上都是单进程工作就已经足够了,有一些特殊的场景,我们需要用多进程来做一些额外的工作,比如下载工作等。

在Android的AndroidManifest.xml 中,每一个activity或者service 都可以指定一个进程名称android:process,当这个activity或者service 被调用时,该进程自动启动。

因此在android中启动一个进程是比较简单的,如果需要看一个app有几个进程,看AndroidManifest.xmlandroid:process 就能知道有几个进程。

建立一个其他进程的service

这里用一个service建立其他的一个进程。RemoteService 是一个空的service。代码如下:

class RemoteService : Service() {private var TAG = "RemoteService"override fun onBind(intent: Intent?): IBinder? = nulloverride fun onCreate() {//Debug.waitForDebugger();super.onCreate()}override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {return super.onStartCommand(intent, flags, startId)}
}

AndroidManifest.xmlandroid:process 的值取为:

android:process=":remote"

这时候,只需要在代码中启动这个服务,进程自然就建立了。

val serviceIntent = Intent(this, RemoteService::class.java)if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {startForegroundService(serviceIntent)} else {startService(serviceIntent)}

在这里插入图片描述

可以看到 com.first66.multi_process:remote的进程已经启动了。

进程间的通讯AIDL

一个app两个进程,就会涉及到两个进程之间的通讯问题,比如一个下载的进程,前端进程需要告诉后台进程要下载哪个链接,后台进程需要告诉前端进程下载的状况。

在android中进程间的通讯可以使用AIDL进行,相当于对服务进行对象的bind

创建 IMessageInterface.aidl 的aidl,用来进行两进程间的通讯。

interface IMessageInterface {/*** Demonstrates some basic types that you can use as parameters* and return values in AIDL.*/void loadData(in String message);
}

这个时候IMessageInterface 只是一个接口而已,相当于一个Binder需要进行实例化。

RemoteService.kt 中创建一个Binder,当每个对象要来绑定这个服务的时候,我们返回这个Binder给他。

    private var binder:Binder = object : IMessageInterface.Stub() {override fun loadData(message: String?) {message?.let {Log.d(TAG,it)}}}

绑定的时候,把这个Binder 给另一个进程。

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

MainActivity 启动这个服务进程的时候,创建一个ServiceConnection 当服务绑定成功了以后,返回Binder

private var iMessageAidlInterface: IMessageInterface? = nullprivate var serviceConnection: ServiceConnection = object  : ServiceConnection{override fun onServiceConnected(p0: ComponentName?, p1: IBinder?) {iMessageAidlInterface = IMessageInterface.Stub.asInterface(p1)iMessageAidlInterface?.loadData("Hello Message")}override fun onServiceDisconnected(p0: ComponentName?) {}}

onServiceConnected 连接成功了以后会IBinder 返回给启动的进程,这个就能给另外一个进程传递消息了。

进程间的调试

在调试的时候,下的断点必须是在同一个进程间才能够停的住,如果是处在不同的进程,即使下了断点也是会变黑的。

可以在另外一个进程服务中onCreate 加入:

Debug.waitForDebugger();

当启动服务的时候,点击另外一个进程,断点才能起作用。

查看进程:
在这里插入图片描述
点击 com.first66.multi_process:remote 进入调试。

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

相关文章:

  • 网站推荐it培训机构怎么样
  • 长春做网站用的软件怎么做网站推广多少钱
  • 每天试用三小时vp加速器seo自学网站
  • 网站建设制作公司晋城做网站的
  • 口碑好的大良网站建设游戏类网站欣赏
  • 吉安工商注册官方网站教做鞋的网站
  • 外贸型网站该如何推广网站建设招标信息
  • 营销型网站建设哪里济南兴田德润优惠吗小小视频在线观看免费播放
  • 阿里云服务器网站建设做广告联盟怎么做网站
  • 贵阳建网站公司电脑优化设置
  • html网站尺寸自己做的网站字体变成方框
  • vscode 网站开发制作我的第一个网页
  • 青岛网站建设培训合肥知名网页制作公司
  • 个人网站建设的步骤网站建设轮播图
  • 电商网站如何做seo哪家网站制作 优帮云
  • 那家公司做网站wordpress 自定义php
  • 有什么做C语言的网站网站推广经验杂谈
  • 英文网站建站模板电脑传奇游戏哪个好玩
  • 指定网站长期建设 运营计划在网站建设工作会上的讲话
  • 济南正规做网站公司wordpress使用文档
  • 荆州网站建设兼职做兼职什么网站比较好
  • 免费的黄冈网站有哪些平台游戏软件株洲seo
  • 个人网站开发报告营销技巧培训课程
  • 上海域名网站吗vivo手机为什么建设网站
  • vs做的本地网站企业网站怎么做中英文切换
  • 什么是网站和网页需要优化的网站有哪些?
  • 不备案的网站能上去吗珠海网站设计培训学校
  • 英国做暧小视频网站在线购物网站功能模块
  • 四川集团网站建设购物网站建设和使用
  • 河南建设银行官方网站重庆最新数据消息