淘宝(阿里百川)手机客户端开发日记第六篇 Service详解(五)
我们现在对上一节中的DEMO进行改进,在服务中开启线程来执行。
package com.example.service; import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import android.util.Log; import android.widget.Button; public class MyService extends Service { public static final String TAG = "MYSERVICE"; private int data; @Override public void onCreate() { Log.i(TAG, "MyService-->onCreate"); new Thread(new Runnable() { @Override public void run() { // 执行具体的任务 getData(); } }).start(); super.onCreate(); } @Override public void onDestroy() { Log.i(TAG, "MyService-->onDestroy"); super.onDestroy(); } private MyBinder binder = new MyBinder(); public class MyBinder extends Binder implements ICalculator { public MyService getService() { return MyService.this; } @Override public int getData() { return data; } } @Override public IBinder onBind(Intent intent) { return binder; } void getData() { try { //模拟耗时的任务 Thread.sleep(10000); data = 100; } catch (InterruptedException e) { e.printStackTrace(); } } }
package com.example.service; public interface ICalculator { int getData(); }
package com.example.servicedemo; 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.Toast; import com.example.service.ICalculator; import com.example.service.MyService; /* * bindService(intent,conn,flag) * Service:onCreate() * Service:onBind() * Activity:onServiceConnected() */ public class MainActivity extends Activity implements OnClickListener { private Button btnStartSrv,btnStopSrv,btnBindSrv; private ICalculator ical; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnStartSrv = (Button)findViewById(R.id.btnStartSrv); btnStopSrv = (Button)findViewById(R.id.btnStopSrv); btnBindSrv = (Button)findViewById(R.id.btnBindSrv); btnStartSrv.setOnClickListener(this); btnStopSrv.setOnClickListener(this); btnBindSrv.setOnClickListener(this); Intent intent=new Intent(MainActivity.this,MyService.class); bindService(intent, conn, BIND_AUTO_CREATE); } @Override protected void onDestroy() { unbindService(conn); super.onDestroy(); } @Override public void onClick(View view) { Intent service = new Intent(this, MyService.class); switch(view.getId()) { case R.id.btnStartSrv: { startService(service); break; } case R.id.btnStopSrv: { stopService(service); break; } case R.id.btnBindSrv: { testSrv(); Toast.makeText(this, "服务调用完了", 1).show(); break; } default: break; } } ServiceConnection conn=new ServiceConnection(){ @Override public void onServiceConnected(ComponentName arg0, IBinder service) { ical = (ICalculator) service; } @Override public void onServiceDisconnected(ComponentName arg0) { } }; public void testSrv() { if(ical != null) { int x = ical.getData(); Toast.makeText(this, String.valueOf(x), 1).show(); } } }
淘宝(阿里百川)手机客户端开发日记第六篇 Service详解(五)的更多相关文章
- 淘宝(阿里百川)手机客户端开发日记第六篇 Service详解(六)
Service和Thread的关系 不少初学者都可能会有这样的疑惑,Service和Thread到底有什么关系呢?什么时候应该用Service,什么时候又应该用Thread? 答案是Service和T ...
- 淘宝(阿里百川)手机客户端开发日记第六篇 Service详解(四)
DEMO1:在Activity里声明一个回调方法,当service完成任务后,调用这个回调方法. 首先,我们先继承service,来创建服务,代码如下: package com.example.ser ...
- 淘宝(阿里百川)手机客户端开发日记第六篇 Service详解(三)
主题:Service与Activity交互通信 问题的引出:现在有个需求,如果我们有一个下载任务,下载时间耗时比较长,并且当下载完毕后,需要更新UI的内容,这时,service中的bindServic ...
- 淘宝(阿里百川)手机客户端开发日记第六篇 Service详解(二)
DEMO1:当我们点击启动服务时和点击停止服务的时候,观察服务的运行状态,布局由于简单,只是两个普通的Button按钮,在此我只上截图. java代码部分 第一步:我们需要实现一个服务类,继承自ser ...
- 淘宝(阿里百川)手机客户端开发日记第六篇 Service详解(一)
public abstract class Service; [API文档关于Service类的介绍] A Service is an application component representi ...
- 淘宝(阿里百川)手机客户端开发日记第七篇 Service,Handler和Thread
现在我们已经已经知道android有Service,Handler和Thread这些内容了,但是我想应该还有很多人对此并不是很清楚他们之间的区别! (1)Service 是运行在后端的程序,不与UI直 ...
- 淘宝(阿里百川)手机客户端开发日记第十一篇 JSP+Servlet
由于本人从事.net开发已有多年经验,今天由于工作需要,我只能学习下JSP+Servlet,至于java web提供了更好的开发框架MVC,现在由于时间关系,我只好用JSP+Servlet来搭建服务器 ...
- 淘宝(阿里百川)手机客户端开发日记第十篇 阿里百川服务器环境介绍之API文档的快速链接(四)
个人感觉比较重要的快速链接: http://open.taobao.com/doc/detail.htm?id=102513 http://open.taobao.com/doc/detail.htm ...
- 淘宝(阿里百川)手机客户端开发日记第十三篇 mysql的连接
首先,我建立了一个包,里面存放了三个类文件,这三个文件是我从网络中找的,经过自己的整理.(我刚才查找想把这三个文件传上去,可能是自己对cnblogs的博客不太熟悉吧,没有找到,我只好粘贴代码了) 三个 ...
随机推荐
- org.springframework.dao.TransientDataAccessResourceException: PreparedStatementCallback.....Parameter index out of range (1 > number of parameters, which is 0).;
sql有误,一般是 sql语句少了问号.
- Object-Oriented CSS
1.指导思想: http://oocss.org/ 2.reset.css http://meyerweb.com/eric/tools/css/reset/ 3.normalize.css http ...
- MongoDB查询并更新一粟
//更新操作使用collection的Update方法,有泛型和非泛型两个版本: //其签名如下(列出了两个简单并常用的的重载,还有几个): public virtual WriteConcernRe ...
- Objective-C Runtime(转)
博主地址: http://yulingtianxia.com/blog/2014/11/05/objective-c-runtime/ 曾经觉得Objc特别方便上手,面对着 Cocoa 中大量 API ...
- chromiun 学习《二》 目录结构 +启动流程
1.chromium的目录结构. 2.先上分析图一张.主要是从BrowserMain进程进行分析的.
- if...else语句的应用题
应用题 namespace ConsoleApplication1 { /* 题目要求:提示用户输入年龄,如果大于等于18,那么用户可以查看.如果小于10岁,则告知用户”少儿不宜“. 如果大于等于10 ...
- HNOI2002
对于当天的营业额,你要找到之前的数和他差的绝对值最小的和.由于这个是不断在插入的,所以用伸展树来维护. http://www.lydsy.com/JudgeOnline/problem.php?id= ...
- Java设计模式-访问者模式(Visitor)
访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化.访问者模式适用于数据结构相对稳定算法又易变化的系统.因为访问者模式使得算法操作增加变得容易.若系统数据结构对象易于变化,经 ...
- 深入研究Struts2(一)---Struts2是什么?它的工作原理是什么?
本文绝对原创, 欢迎转载, 但是转载请记得注明文章出处:http://blog.csdn.net/izard999/article/details/39891281 近4年都在从事Android方 面 ...
- jQuery插件开发详细教程
这篇文章主要介绍了jQuery插件开发详细教程,将概述jQuery插件开发的基本知识,最佳做法和常见的陷阱,需要的朋友可以参考下 扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间. ...