分享

android service

 风雪夜归人_95 2014-02-14

1)一个定义好的service必须在AndroidManifest.xml中通过<service>元素声明才能使用。

2)为了实现进程间的相互通信,Android采用了一种轻量级的实现方式RPC(Remote Procedure Call,

远程进程调用)来完成。并且Android通过接口定义语言(Android Interface Definition

Language,AIDL)来生成两个进程间相互访问的代码。

3)在AIDL文件中可以声明任意多个方法,方法可以带参数也可以有返回值,参数和返回值可以是任意类

型。但注意除了java原始类型、String、List、Map和CharSequce不需要导入,其他任何类型即使在同一

个包中都需要导入。

4)AIDL文件的内容与java代码非常相似,但不能加修饰符(如private)、AIDL服务不支持的数据类型

(如InputStream、OutputStream)等内容。在所在包下直接创建AIDL文件。若该文件的内容正确,ADT

(刷新一下)会自动生成一个同名的java文件。
 
定义一个MyService类时,是继承Service类。

public class MyService extends Service{

 @Override
 public IBinder onBind(Intent arg0) {
  // TODO Auto-generated method stub
  Log.i("SERVICE", "onBind..........");
  Toast.makeText(MyService.this, "onBind...........", Toast.LENGTH_LONG).show();
  return null;
 }

 @Override
 public void onCreate() {
  // TODO Auto-generated method stub
  Log.i("SERVICE", "onCreate.............");
  Toast.makeText(MyService.this, "onCreate.............", Toast.LENGTH_LONG).show();
 }

 @Override
 public void onDestroy() {
  // TODO Auto-generated method stub
  Log.i("SERVICE", "onDestroy.......");
  Toast.makeText(MyService.this, "onDestroy......", Toast.LENGTH_LONG).show();
 }

 @Override
 @Deprecated
 public void onStart(Intent intent, int startId) {
  // TODO Auto-generated method stub
  Log.i("SERVICE", "onStart.........");
  Toast.makeText(MyService.this, "onStart.........", Toast.LENGTH_LONG).show();
 }

 
开启服务/关闭服务步骤:
1.定义一个Intent。  
2.设置这个Intent的Action。
3.调用startService()/stopService() 方法。
 
绑定/释放一个服务步骤:
1.定义一个 ServiceConnection类的conn,这个参数对后面有用。它必须实现onServiceConnected(ComponentName arg0, IBinder arg1) 和onServiceDisconnected(ComponentName arg0)这两个方法。
2.定义一个Intent。
3.设置这个Intent的Action。
4.调用bindService()/unbindService()方法。 (conn将作为一个参数传递给这两个方法)
 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多