WEB开发网
开发学院手机开发Android 开发 android编写Service入门用法与教程 阅读

android编写Service入门用法与教程

 2010-09-15 00:09:00 来源:WEB开发网   
核心提示:void onDestroy() { super.onDestroy(); this.stopService(new Intent(this, CountService.class)); }}可通过日志查看到后台线程打印的计数内容,编写本地服务和Activity交互的示例上面的示例是通过startService和sto
void onDestroy() { super.onDestroy(); this.stopService(new Intent(this, CountService.class)); }}

可通过日志查看到后台线程打印的计数内容。

编写本地服务和Activity交互的示例

上面的示例是通过startService和stopService启动关闭服务的。适用于服务和activity之间没有调用交互的情况。如果之间需要传递参数或者方法调用。需要使用bind和unbind方法。

具体做法是,服务类需要增加接口,比如ICountService,另外,服务类需要有一个内部类,这样可以方便访问外部类的封装数据,这个内部类需要继承Binder类并实现ICountService接口。还有,就是要实现Service的onBind方法,不能只传回一个null了。

这是新建立的接口代码:

package com.easymorse;public interface ICountService { public abstract int getCount();}

修改后的CountService代码:

package com.easymorse;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;import android.util.Log;public class CountService extends Service implements ICountService { private boolean threadDisable; private int count; private ServiceBinder serviceBinder=new ServiceBinder(); public class ServiceBinder extends Binder implements ICountService{ @Override public int getCount() { return count; } } @Override public IBinder onBind(Intent intent) { return serviceBinder; } @Override public void onCreate() { super.onCreate(); new Thread(new Runnable() { @Override public void run() { while (!threadDisable) { try { Thread.sleep(1000); } catch (InterruptedException e) { } count++; Log.v("CountService", "Count is " + count); } } }).start(); } @Override public void onDestroy() { super.onDestroy(); this.threadDisable = true; Log.v("CountService", "on destroy"); } /* (non-Javadoc) * @see com.easymorse.ICountService#getCount() */ public int getCount() { return count; }}

服务的注册也要做改动,AndroidManifest.xml文件:

Acitity代码不再通过startSerivce和stopService启动关闭服务,另外,需要通过ServiceConnection的内部类实现来连接Service和Activity。

上一页  1 2 3 4 5  下一页

Tags:android 编写 Service

编辑录入:coldstar [复制链接] [打 印]
赞助商链接