位置: 编程技术 - 正文

Activity和Service交互(service与activity数据交互)

编辑:rootadmin

推荐整理分享Activity和Service交互(service与activity数据交互),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:service与activity的区别,activity service,activity和service绑定,activity和service绑定,安卓activity和service,activity和application,activity和application,activity和service绑定,内容如对您有帮助,希望把文章链接给更多的朋友!

Activity和Service交互

本人常用的三种,不足之处希望大家多多提出宝贵意见

第一种Handler:

Activity

import android.annotation.SuppressLint;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ProgressBar;import com.service.MsghdSeceiver;public class MainHandlerActivity extends Activity { private ProgressBar mProgressBar; private Button btn; private Intent intent; @SuppressLint("HandlerLeak") Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { if (msg.what == 0x) { // 拿到进度,更新UI int progress = (int) msg.obj; mProgressBar.setProgress(progress); } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_handler); mProgressBar = (ProgressBar) findViewById(R.id.pb_mainhd_jindu); btn = (Button) findViewById(R.id.btn_mainhd_btn); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); MsghdSeceiver.setHandler(handler); // 启动服务 intent = new Intent("com.example.communication.MSG_ACTIONhd"); } @Override protected void onResume() { super.onResume(); setListener(); } private void setListener() { btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { startService(intent); } }); } @Override protected void onDestroy() { // 停止服务 stopService(intent); super.onDestroy(); }}

Service

import android.app.Service;import android.content.Intent;import android.os.Handler;import android.os.IBinder;import android.os.Message;public class MsghdSeceiver extends Service { /** * 进度条的最大&#; */ public static final int MAX_PROGRESS = ; /** * 进度条的进度&#; */ private int progress = 0; private static Handler handlers; public static void setHandler(Handler handler) { handlers = handler; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); startDownLoad(); } /** * 模拟下载任务,每秒钟更新一次 */ public void startDownLoad() { new Thread(new Runnable() { @Override public void run() { while (progress < MAX_PROGRESS) { progress &#;= ; Message message = new Message(); message.what = 0x; message.obj = progress; handlers.sendMessage(message); // Message.obtain(handlers, 0x, progress).sendToTarget(); try { Thread.sleep(); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; }}

注意

<service android:name="com.service.MsghdSeceiver" android:exported="false" > <intent-filter> <action android:name="com.example.communication.MSG_ACTIONhd" /> </intent-filter> </service>

第二种接口:

Activity

import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ProgressBar;import com.OnProgressListener;import com.service.MsgService;public class MainActivity extends Activity { private MsgService msgService; private ProgressBar mProgressBar; private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mProgressBar = (ProgressBar) findViewById(R.id.pb_main_jindu); btn = (Button) findViewById(R.id.btn_main_btn); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); // 绑定Service 需要注册<action // android:name="com.example.communication.MSG_ACTION" /> Intent intent = new Intent("com.example.communication.MSG_ACTION"); bindService(intent, conn, BIND_AUTO_CREATE); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); setListener(); } private void setListener() { // TODO Auto-generated method stub btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub msgService.startDownLoad(); } }); } ServiceConnection conn = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName arg0) { // TODO Auto-generated method stub msgService = null; } @Override public void onServiceConnected(ComponentName name, IBinder service) { // 返回一个MsgService对象 msgService = ((MsgService.MsgBinder) service).getService(); // 注册回调接口来接收下载进度的变化 msgService.setOnProgressListener(new OnProgressListener() { @Override public void onProgress(int progress) { // TODO Auto-generated method stub mProgressBar.setProgress(progress); } }); } }; @Override protected void onDestroy() { unbindService(conn); super.onDestroy(); }}

Activity和Service交互(service与activity数据交互)

Service

import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;import com.OnProgressListener;public class MsgService extends Service { /** * 进度条的最大&#; */ public static final int MAX_PROGRESS = ; /** * 进度条的进度&#; */ private int progress = 0; /** * 更新进度的回调接口 */ private OnProgressListener onProgressListener; /** * 注册回调接口的方法,供外部调用 * * @param onProgressListener */ public void setOnProgressListener(OnProgressListener onProgressListener) { this.onProgressListener = onProgressListener; } /** * 增加get()方法,供Activity调用 * * @return 下载进度 */ public int getProgress() { return progress; } /** * 模拟下载任务,每秒钟更新一次 */ public void startDownLoad() { new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub while (progress < MAX_PROGRESS) { progress &#;= ; // 进度发生变化通知调用方 if (onProgressListener != null) { onProgressListener.onProgress(progress); } try { Thread.sleep(); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } /** * 返回一个Binder对象 */ @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return new MsgBinder(); } public class MsgBinder extends Binder { /** * 获取当前Service的实例 * * @return */ public MsgService getService() { return MsgService.this; } }}

接口

public interface OnProgressListener { void onProgress(int progress);}

注意

<service android:name="com.service.MsgService" android:exported="false" > <intent-filter> <action android:name="com.example.communication.MSG_ACTION" /> </intent-filter> </service>

第三种广播:

Activityimport android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ProgressBar;public class MainGbActivity extends Activity { private ProgressBar mProgressBar; private Button btn; private Intent mIntent; private MsgReceiver msgReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_gb); mProgressBar = (ProgressBar) findViewById(R.id.pb_maingb_jindu); btn = (Button) findViewById(R.id.btn_maingb_btn); } @Override protected void onStart() { super.onStart(); // 启动服务 mIntent = new Intent("com.example.communication.MSG_ACTIONs"); // 动态注册广播接收器 msgReceiver = new MsgReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("com.example.communication.RECEIVER"); registerReceiver(msgReceiver, intentFilter); } @Override protected void onResume() { super.onResume(); setListener(); } private void setListener() { btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { startService(mIntent); } }); } /** * 广播接收器 * */ public class MsgReceiver extends BroadcastReceiver { @Override public void onReceive(Context arg0, Intent intent) { // 拿到进度,更新UI int progress = intent.getIntExtra("progress", 0); mProgressBar.setProgress(progress); } } @Override protected void onDestroy() { super.onDestroy(); // 停止服务 stopService(mIntent); // 注销广播 unregisterReceiver(msgReceiver); }}

Service

import android.app.Service;import android.content.Intent;import android.os.IBinder;public class MsggbSeceiver extends Service { /** * 进度条的最大&#; */ public static final int MAX_PROGRESS = ; /** * 进度条的进度&#; */ private int progress = 0; private Intent intent = new Intent("com.example.communication.RECEIVER"); /** * 模拟下载任务,每秒钟更新一次 */ public void startDownLoad() { new Thread(new Runnable() { @Override public void run() { while (progress < MAX_PROGRESS) { progress &#;= ; // 发送Action为com.example.communication.RECEIVER的广播 intent.putExtra("progress", progress); sendBroadcast(intent); try { Thread.sleep(); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO Auto-generated method stub startDownLoad(); return super.onStartCommand(intent, flags, startId); } @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; }}

注意

<service android:name="com.service.MsggbSeceiver" android:exported="false" > <intent-filter> <action android:name="com.example.communication.MSG_ACTIONs" /> </intent-filter> </service>

布局一样

<RelativeLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.activity.MainActivity$PlaceholderFragment" > <ProgressBar android:id="@&#;id/pb_mainhd_jindu" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@&#;id/btn_mainhd_btn" android:layout_marginTop="dp" android:text="HandlerService" android:layout_below="@id/pb_mainhd_jindu" android:layout_width="match_parent" android:layout_height="wrap_content" /></RelativeLayout>

注解差不多都了,一看就应该懂,最好写一下,记忆会深点

Android手机实时视频监控 最近手机安装了一个千里和千里家居远程监控的应用,对里面的实时监控交通路口的状态有点好奇。以是使用相应的方法反编译看看她的原理。对于软

解决“Cannot merge new index into a non-jumbo instruction”的问题 在将ADT和SDKTool升级到最新(分别是.1和.0.1)之后,我的一个工程(相对比较大)在编译并运行的时候,出现错误,Eclipse控制台输出如下信息:Unableto

android 功能引导界面实现 一.界面实现:借鉴了别人的实例,然后记录下引导界面的实现,总体来说实现不算困难,前提是要有个美工帮你做这些引导图片(找了张图片凑合用吧

标签: service与activity数据交互

本文链接地址:https://www.jiuchutong.com/biancheng/381062.html 转载请保留说明!

上一篇:Fragment里面嵌套ViewPager(fragment中嵌套fragment)

下一篇:Android手机实时视频监控(安卓实时屏幕)

  • 收到政府的补贴收入现金流量表填哪里
  • 企业出售土地的土地增值税计算方法
  • 营业账簿印花税申报期限
  • 可供出售金融资产包括哪些内容
  • 已交增值税如何做账
  • 太阳能发电开票编码
  • 企业隐藏收入会受怎样处罚
  • 房地产增值税怎么算举例说明
  • 自来水公司代收污水处理费账务处理
  • 加油费充值卡发票可以报销吗
  • 领用包装物会计处理
  • 长期借款利息的会计分录
  • 企业年金的税收政策
  • 如何计算非居民用电量
  • 地税没报税怎么办
  • 水利建设基金怎么计提
  • 货运发票和提供建筑服务的专票备注怎么写?
  • 递延资产摊销属于什么科目
  • 个人证券交易结算资金
  • 投资收益科目应用
  • 收到一笔款在在当月已退回怎么做账?
  • 不用开票的收入有哪些
  • 资产负债表在建工程怎么填列
  • 销售商品结转成本会计分录
  • 关闭 ipv6
  • i912900k用什么主板好
  • vscode国内镜像
  • php程序员不应该做的事
  • 0x0000000a蓝屏代码怎么解决
  • 使用过的固定资产出售,怎么处理
  • 木星应该涂什么颜色
  • 公司向个人支付劳务费
  • 有限公司股权转让怎么办理流程
  • 现金流量表 科目
  • 计提补贴会计分录
  • 什么是收付实现制?什么是权责发生制?
  • 口腔门诊提供免费服务有哪些?
  • yolov3目标检测步骤流程图
  • 租金算营业成本还是管理费用
  • java一维数组从小到大排序
  • 首涂第二十一套模板
  • 一笔购入多项固定资产
  • 处置子公司利润表
  • 小规模纳税人都报什么税
  • 普通增值税发票会计科目如何写?
  • mysql导入sql文件命令
  • 资本化费用为什么会减少
  • 跨年错账更正
  • 纳税人未抄报税怎么办
  • 物业公司代收代付租金要开发票吗
  • 预付账款的账务处理过程
  • 交增值税如何计算
  • 外购货物分配给股东
  • 亏损弥补的会计处理方法
  • 残保金计算公式2023年
  • 出售二手固定资产如何开票
  • 对公帐户发票金额是什么
  • 企业债与公司债的还款有区别
  • sql 获取字段类型
  • win8 更新
  • 限制root用户远程登录
  • xp电脑内存占用过高怎么办
  • linux用什么写c
  • windows8停止
  • win10系统的pin码
  • Windows 8 Consumer Preview 中的新热键介绍
  • opengl es 3.2
  • js 列表
  • bootstrap按钮的风格有哪些?
  • 安卓开发解析xml
  • html常用字符
  • 分享js粘帖屏幕怎么弄
  • javascript 正则
  • webview清除数据
  • unity动画教程
  • 自动寻路小说
  • 小规模纳税人开1%普票怎么报税
  • 北京海淀区国税有几个办税大厅?
  • 电子税务局里怎么删除购票员
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设