问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

service与activity怎么实现双向通信

发布网友 发布时间:2022-04-21 23:01

我来回答

1个回答

热心网友 时间:2023-08-01 23:35

在Android中,Activity
主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,
我们一般在Activity中启动后台Service,通过Intent来启动,Intent中我们可以传递数据给Service,而当我们
Service执行某些操作之后想要更新UI线程,我们应该怎么做呢?接下来我就介绍两种方式来实现Service与Activity之间的通信问题
通过Binder对象
当Activity通过调用bindService(Intent service, ServiceConnection conn,int flags),我们可以得到一个Service的一个对象实例,然后我们就可以访问Service中的方法,我们还是通过一个例子来理解一下吧,一个模拟下载的小例子,带大家理解一下通过Binder通信的方式
首先我们新建一个工程Communication,然后新建一个Service类

[java] view plain copy
<span style="font-family:System;">package com.example.communication;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;

public class MsgService extends Service {
/**
* 进度条的最大值
*/
public static final int MAX_PROGRESS = 100;
/**
* 进度条的进度值
*/
private int progress = 0;

/**
* 增加get()方法,供Activity调用
* @return 下载进度
*/
public int getProgress() {
return progress;
}

/**
* 模拟下载任务,每秒钟更新一次
*/
public void startDownLoad(){
new Thread(new Runnable() {

@Override
public void run() {
while(progress < MAX_PROGRESS){
progress += 5;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}

}
}
}).start();
}

/**
* 返回一个Binder对象
*/
@Override
public IBinder onBind(Intent intent) {
return new MsgBinder();
}

public class MsgBinder extends Binder{
/**
* 获取当前Service的实例
* @return
*/
public MsgService getService(){
return MsgService.this;
}
}

}</span>
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谈过几次恋爱才知道爱情的真谛? 已知函数fx﹦Asin(ωx+ψ),(ω&gt;0,A&gt;0,ψ∈(0,π/2)) 求fx解析式 已知a... 已知函数fx=sin(wx+Ф)(其中w&gt; 数学:函数f(x)=Asin(ωx+φ)(其中A&gt;0,|φ|&lt;π/2)的图像如图所示,为了... 函数fx=sin(x-π/12)xsin(x+5π/12),求最小正周期 已知函数fx=Asin(wx+φ),(w&gt;0,A&gt;0,φ∈(0,π/2)的部分图像如图所示... 已知函数f(x)=Asin(wx+φ)(x∈R,w&gt;0,0&lt;φ&lt;π/2)的部分图像如图所示... 珠江的型号怎么那么多?都说自己的好,看晕了,到底那个好啊? ...ωx+φ)的图像关于直线x=π/3对称,且f(π/12)=0,则当ω取最小值... 朋友介绍买珠江的钢琴,上网一查型号那么多,真头晕,请问珠江P、T、R... 假装情侣的电影剧情 贷款45万5年还清,六厘息,五年后本息一共多少钱? 如何在手机里找到备忘录的文件夹 关于android编程中service和activity的区别 金控钱包能登上,就是蓝牙扫不到设备怎么办? 假装情侣这本书适合多大儿童 买房贷款45万20年月供多少? Android Service和Activity以及Notification之间的... 为什么每次用微信时都需要密码登录、怎么释放微信... 现代金控的pos机刷卡输入密码后出现“个人信息读取... 女生说要和你假装情侣是什么意思? 滴滴快车办理驾驶员证需要多少钱 现代金控pos机显示就一格信号,刷不成卡了!希望有... 我没有退出微信,但我上微信时为什么要再次登录,... 假装情侣中的所有插曲? 为什么activity和service的通信是进程间通信 现代金控pos刷卡交易拒绝 等额本金贷款45万25年每月还款多少? 小米四备忘录在哪里 跪求《假装情侣》百度网盘高清资源在线观看,黄渤... 爱情是假装情侣?请问是什么意思? android activity 与 service 怎么联系在一起 小米备忘录目录在哪 什么是假装情侣 为什么登录微信需要输入AppleID需要密码 service怎么通知activity更新 为什么我的微信要重新登陆 我银行贷款45万,银行利率是6.37,怎么我算出来的... 求《假装情侣》中的语录啊。 马铃薯淀粉是不是生粉 简述 activity 和 service 的生命周期有什么不同 小米上密码备忘录怎么找 为什么进入微信页面要密码 我们准备假装情侣,怎么样才能让别人觉的像情侣啊 土豆生粉和淀粉一样吗 设置了微信密码,为什么不用输入密码就直接登录了呢 假装情侣经典台词 Activity与Service是否处于同一进程?Service 的两... 假装情侣的结局是什么? 生粉是土豆淀粉吗?