系统服务(Service)

Servicesandroidlinux,让人心动的功能,手机上也开发系统服务,当然,这还得归功于Linux系统内核。

眼高手底,是我经常犯的毛病,在Service是又犯了,失败。用代码说话。

创建一个Service的过程(示例)

import android.app.Service;

import android.content.Intent;

import android.os.Binder;

import android.os.IBinder;

public class MyService extends Service {

private final IBinder mBinder = new MyBinder();

@Override

public void onCreate() {

super.onCreate();

}

@Override

public IBinder onBind(Intent intent) {

// TODO Auto-generated method stub

return mBinder;

}

public class MyBinder extends Binder {

MyService getServices() {

return MyService.this;

}

}

@Override

public void onStart(Intent intent, int startId) {

super.onStart(intent, startId);

}

@Override

public void onDestroy() {

super.onDestroy();

}

}

上面示例代码完成较完成的演示了如何创建一个Serivce及重量的几个方法(生命周期)

onCreate():当第一次创建服务时,系统自动调用此方法。一般服务的的所有初始化操作代码放到此块中。

onStart(Intent intent, int startId)API文档上说此方法已经过时,推荐使用int onStartCommand (Intent intent, int flags, int startId)

暂时还没有搞明白onStartCommand

OnStart()方法,当客户端启动或每次绑定服务时由系统自动调用。

onDestroy():在服务注销时系统自动调用,一些清理工作在此完成。

服务写完之后,还必须在AndroidMainifest.xml中注册。

<service android:name="cn.myandroid.MyService" />

如果服务中用到了一些权限,还必须注册相应的<uses-permission>

Ok,到此一个服务基本不创建完成。下面介绍如果在客户端启动一个服务。

public class MyActivity extends Activity {

private MyService mService;

private static boolean ISRUNNING = false;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

startMyService();// 启动

}

@Override

public void onResume() {

super.onRestart();

if (ISRUNNING) {

bindMyService();

}

}

@Override

public void onDestroy() {

super.onDestroy();

// if (ISRUNNING) {

// unbindMyService();

// }

}

private ServiceConnection mConnection = new ServiceConnection() {

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

// TODO Auto-generated method stub

mService =

((MyService.MyBinder)service).getServices();

}

@Override

public void onServiceDisconnected(ComponentName name) {

// TODO Auto-generated method stub

}

};

Intent intent = new Intent(MyActivity.this, MyService.class);

// 启动服务

private void startMyService() {

startService(intent);

ISRUNNING = true;

}

// 绑定

private void bindMyService() {

bindService(intent, mConnection,Context.BIND_AUTO_CREATE);

}

// 取消绑定

private void unbindMyService() {

unbindService(mConnection);

}

private void stopMyService() {

stopService(intent);

ISRUNNING = false;

}

}

上述代码展示了一个ActivityClient)如何启动并绑定一个服务的。主要是利用了Activity的生命周期来创建、绑定、取消绑定一个服务。

上面代码中没有没用调用stopMyService()退出个服务,可根据你的需要进行调用。

更多相关文章

  1. Android(安卓)调用系统摄像头
  2. Android(安卓)EditText输入框被键盘遮挡问题解决
  3. android 调用前摄像头进行拍照的方法及完整例子
  4. Android+JNI调用–文件操作
  5. Android(安卓)视图绑定,找不到类 'ResultProfileBinding'
  6. 动态设置android:drawableLeft|Right|Top|Bottom
  7. Android(安卓)Studio NDK及so文件开发 以及常见错误
  8. Android(安卓)调用相册 拍照 实现系统控件缩放 切割图片
  9. android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConn

随机推荐

  1. Android动画alpha、rotate、scale、trans
  2. android开发人员必须知道的事---苹果HTC
  3. unity3d Android(安卓)SDK 安装
  4. 大型情感类电视连续剧--Android高德之旅(3
  5. ConstraintLayout约束布局属性
  6. android drawable序列化
  7. android 5.0以上的主题错误
  8. Android(安卓)数据库
  9. Android(安卓)Light Sensor
  10. [置顶] Android实用视图动画及工具系列之