Mono For Android 服务service的学习(1)--本地服务

service服务在应用程序中是一个比较常用的组件,至于service的作用,随便百度一下或者找本android的书都会有介绍。

简单记录下在mono里面的使用。


服务分为两种:本地服务和远程服务

本地服务:应用于程序内部

远程服务:应用于android系统上的应用程序之间;


先看下生命周期,随便从网上找的:



上诉可以看到两者的启动方式还是有一定的差别;


今天记录下本地服务的使用;


一、创建service的子类

public class MyService : Service{
...
    public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
    {
    }
}

OnStartCommand方法相当重要,也就是activity启动的服务所需要处理的事情就写在这个方法里面;

二、在Activity中创建并启动服务

    Intent sendIntent = new Intent(this, typeof(SendInfoService));

如果需要传递数据给服务,那么可以在启动之前使用intent放置数据,在服务中的OnStartCommand中使用intent参数即可获取activity传递过来的数据;
三、启动服务

启动服务有两种方式:

1、start方式  在Activity中调用this.StartService(sendIntent);即可启动服务,此方法最为简单;

2、bind方式  public override bool BindService(Intent service, IServiceConnection conn, Bind flags);

这就是bind方法的原型

参数:service:即为创建的服务intent,

conn:一个实现了IServiceConnection接口的对象,需要实现此接口提供的以下两个方法;      

    public void OnServiceConnected(ComponentName name, IBinder service)
    {
    }

    public void OnServiceDisconnected(ComponentName name)
    {
    }

在绑定服务的时候,需要一个服务连接对象,ServiceConnection,服务一旦连接,就会调用onServiceConnected方法,我们可以在这个方法里面返回我们的本地服务对象;而在服务断开时候会调用onServiceDisconnected方法,我们可以清理一些服务资源。

三、停止服务;


在Activity中可以调用StopService(Intent)方法停止服务;

在服务中可以调用StopSelf();方法停止服务;

这就是本地服务的简单用法;

使用服务要注意一个关键的地方:Service和其他组件一样,都是运行在主线程中,因此不能用它来做耗时的请求或者动作。你可以在服务中开一一个线程,在线程中做耗时动作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值