Android 使用【AIDL】调用外部服务(3)

顺利生成成功后,我们再来编写一个AIDL 服务类,代码如下:

package com.aidl.test;

import java.util.HashMap;
import java.util.Map;

import Android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;

public class MyService extends Service {

    @Override
    
public IBinder onBind(Intent intent) {
        
// TODO Auto-generated method stub
        return new MyServiceimpl();
    }

    
public class MyServiceimpl extends IMyService.Stub {

        @Override
        
public Student getStudent() throws RemoteException {
            
// TODO Auto-generated method stub
            Student st = new Student();
            st.setAge(
18);
            st.setName(
"terry");

            
return st;
        }

        @Override
        
public Map getMap(String testClass, Student student)
                
throws RemoteException {
            
// TODO Auto-generated method stub
            Map<String, Object> map = new HashMap<String, Object>();
            map.put(
"class""五年级");
            map.put(
"age", student.getAge());
            map.put(
"name", student.getName());
            
return map;
        }

    }

}

如上代码,MyService 服务类有一个子类并继承自我们上面生成的*.java 文件重写其中我们在*.aidl 中声明的两个接口方法,实现了其功能。上面IBinder 必须返回此服务类的子类对象,否则客户端将无法获得服务对象。

最后,即然有服务的操作,那么就得在manifest文件中注册服务类,代码如下:

<service android:name=".MyService">
    
<intent-filter>
        
<action android:name="com.aidl.test.IMyService"></action>
    
</intent-filter>
</service>

至此,服务端就己经开发完成了,下面接着开发客启端。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwssjj.html