位置: 编程技术 - 正文

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手机实时视频监控(安卓实时屏幕)

  • 无票收入小规模怎么报增值税
  • 资源税计入什么科目
  • 国企的注册资本也很少吗
  • 清算缴纳企业所得税
  • 季报利润表本月金额和本年累计金额
  • 交易性金融资产和其他权益工具投资的区别
  • 微商怎么交易流程
  • 车船税没有发票可以税前扣除吗
  • 商品破损了应该怎么赔偿
  • 存货盘亏的分录怎么写
  • 增值税发票地址变更后开原来的地址能用吗
  • 房地产企业所得税预缴
  • 财会【2016】22号文
  • 一般纳税人的资质在哪里打印
  • 收到上级补助收入支出时财务会计怎么记账
  • 增值税红字发票是什么意思
  • 加装固态后如何分盘
  • 上年多计提所得税怎么做会计分录
  • 水利基金返还分录怎么写
  • 一般纳税人增值税申报表怎么填写
  • 使用的磁盘空间在哪
  • mac怎么创建icloud
  • php网页爬虫
  • 外籍人员个人所得税计算
  • 委托贷款会计处理流程
  • php7多线程支持如何
  • 培训公司要交哪些税
  • 没有报税盘
  • 增值税退税要准备什么资料
  • python基本功
  • opencv官方教程
  • phpcms怎么用
  • 计入资本公积的金额怎么算
  • 公司的基本户怎么换
  • 企业的借款利息可能计入哪些账户
  • 免征增值税的项目可以开专票吗
  • 投资别人公司的注意事项
  • 报销借款分录怎么做
  • 民办非注销原因如何写
  • 小规模收入怎么算
  • 代扣代缴的个税可以税前扣除吗
  • 增值税扣缴义务发生时间为扣缴义务人扣缴税款的当天
  • 建筑企业结转成本附件
  • 车辆购置税多少个点?
  • 股权转让是否需要全体股东签字
  • 交租金没有发票怎么办
  • 当月只有进项票没有销项票怎么办
  • 根据《物业管理条例》的规定,物业服务企业
  • 保本理财产品如何赎回
  • 服务业成本的会计核算
  • 差旅费车票是否可以报销
  • 幼儿园报税的基础是什么
  • 倒卖承兑汇票被判刑
  • 存出投资款应计入什么科目
  • 小规模纳税人公司可以开专票吗
  • 有存货的公司
  • mysql5.5怎么用
  • mysql8.0免安装
  • 开源操作系统年度技术会议
  • bios开机密码怎么关闭
  • xp系统关机界面设置
  • ubuntu20.04 unity
  • freebsd操作命令
  • Windows Server AD 访问数量控制配置方法
  • windows10网页打不开怎么办
  • ubuntu下安装win10
  • ubuntu上安装qt
  • 如何去掉windows7开机密码
  • opera installer
  • windows更新后桌面没反应
  • 龙芯芯片组
  • linux 系统变量
  • 如何优化资本结构
  • Linux文本处理工具的实验总结
  • python对文件操作采用的统一
  • 如何在电子税务局看本月应申报的税
  • 水电费加1
  • 税务申报规则
  • 税金乘以12%是什么
  • 资源税的作用是什么?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设