位置: 编程技术 - 正文

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

  • 本期应补退税额和期末未缴税额
  • 房地产购买材料财务报销单上怎么写
  • 工会经费计入成本费用
  • 清算期间作为纳税年度
  • 收取境外技术服务费如何
  • 电信充值调账什么意思
  • 增值税的附加税率是多少
  • 基础设施特许权包括
  • 行政相对人和行政管理相对人的区别
  • 开出增值税发票没收到怎么抵扣进项税?
  • 本年累计应交税费需要加上年初数吗
  • 污泥处置费用怎么开票
  • 房地产行业零税率发票
  • 互联网企业交什么保险
  • 海外仓储的税务风险你都清楚吗?
  • 维修服务费税率是多少?
  • 个税生产经营所得B表在哪里
  • 开户存入现金计什么科目
  • 税务登记都需要什么
  • 高新技术企业的研发费用比例
  • 少计提增值税0.01计入营业外
  • 专利代理费如何报销
  • 残保金零申报但是逾期未报
  • win10 kb5001567
  • 分享下会画画是怎样的体验
  • PHP:stream_register_wrapper()的用法_Stream函数
  • 原材料结转成本的会计分录例题
  • 农产品销售发票抵扣政策
  • php自动编号
  • php restful接口
  • ssh怎么带密码
  • 音频的时域波形
  • 运筹最优化方法有哪些
  • 芝麻信用app
  • php排序方法有几种区别
  • 固定资产清理属于非流动资产吗
  • vue组件怎么使用
  • 跨域问题是什么
  • 进项税转出能转回吗
  • SQLite学习手册(SQLite在线备份)
  • sql语句的查询语句
  • 税控服务费减免会计分录
  • 怎么在电子税务局查询进项发票
  • 个人劳务费用
  • 哪些人需要进行个人所得税年度汇算
  • 一个分组名称
  • 哪些情况需要开具无违法犯罪证明
  • 借款怎么入会计分录
  • 售后回租如何做会计处理
  • 失控发票未付款什么意思
  • 生产成本福利费如何分摊
  • 工程施工科目设置
  • 买辆车要交多少税
  • mysqldump导出csv文件
  • mysql学习资料
  • 透明终端架构
  • win7系统安全在哪
  • 打造安全稳定
  • centos怎么配置dns
  • ubuntu安装chia
  • 怎么修改Windows账户密码
  • mac与windows的使用区别
  • win8的运行在哪里打开
  • oeloader.exe - oeloader是什么进程 有什么用
  • sendmail邮件服务器的配置
  • win8可以装pr2018吗
  • 阴影效果有什么用
  • xcode用法
  • jquery validate表单内容怎么添加边框
  • android系统介绍
  • 消耗cpu的软件
  • jquery-validation
  • javascript要怎么学
  • jquery mobile app
  • 快速学会java
  • 国家税务总局党建工作局
  • 国家浙江税务局
  • 税务贷app
  • 安徽省税务干部学校
  • 国税局江西省税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设