淘宝(阿里百川)手机客户端开发日记第六篇 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的博客不太熟悉吧,没有找到,我只好粘贴代码了) 三个 ...
随机推荐
- Django1.8教程——从零开始搭建一个完整django博客(三)
这一节主要介绍对数据库的访问操作:通过管理器(manage),对对象进行检索.修改.删除等操作,详细介绍了如何针对不同的模型自定义管理器. 查询和管理工作 现在,我们已经有了一个功能完善的Django ...
- 云计算之路-阿里云上:2014年6月12日12点IIS请求到达量突降
今天中午12:00左右,在Windows性能监视器中突然发现SLB中的两台云服务器的IIS请求到达量(ArriveRate)突然下降,见下图: IIS日志中的情况如下: 综合以上情况,我们推测在12: ...
- 简单的音乐播放器(VS 2010 + Qt 4.8.5)
昨天历经千辛万苦,配置好了VS 2010中的Qt环境(包括Qt for VS插件),今天决定浅浅地品味一下将两者结合进行编程的魅力. 上网查了一些资料,学习了一些基础知识,决定做一个简单的音乐播放器, ...
- 第一章 : javaScript框架分类及主要功能
从内部架构和理念划分,目前JavaScript框架可以划分为5类. 第一种是以命名空间为导向的类库或框架,如果创建一个数组用new Array(),生成一个对象用new Object(),完全的j ...
- 每天一个linux命令(40):watch命令
watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...
- Eclipse字体大小设置
打开Eclipse,在主界面下Window->Preferences->General->Appearance->Colors and Fonts, 然后在右边展开框Basic ...
- 报课系统APP
031302307黄丰润 031302343张晓燕 #NABCD模型分析 合理分析需求有助于说服客户,所以我们有如下分析 N(need)--客户需要什么 负责人需要将选课信息和选课表格一起发送给所负责 ...
- Java设计模式-模板方法模式(Template Method)
解释一下模板方法模式,就是指:一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用,先看个关系 ...
- 在VS2012中编译WinXP兼容的程序
VS2012默认是不兼容Windows XP的,编译链接出来的程序只能在Windows Vista及以上版本的操作系统上运行.可是有时需要在Windows XP上运行,又不得不用VS2012(例如用了 ...
- UvaLive 5026 Building Roads
传送门 Time Limit: 3000MS Description There is a magic planet in the space. There is a magical country ...