[Android]使用AIDL进行进程间通信

            temp.userName="U123";

            temp.pwd="123";

            temp.sex=1;

            temp.name="temp"+(new Date()).getSeconds();

    try {

            if(userBinder.register(temp)){

            tv.append(temp.toString()+"add user success\n");

        }

        } catch (RemoteException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

});

addUser.setText("addUser");

Button loginUser=new Button(this);

loginUser.setOnClickListener(new View.OnClickListener() {



        @Override

        public void onClick(View v) {

            // TODO Auto-generated method stub

            User temp=new User();

            temp.userName="U123";

            try {

                if(userBinder.login(temp)){

                    tv.append(temp.toString()+"login user success\n");

                }

            } catch (RemoteException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

    });

    loginUser.setText("loginUser");



    ll.addView(loginUser);

    ll.addView(addUser);

    ll.addView(tv);

    setContentView(ll);





bindService(new Intent("string.pub.action.Binder"), conn, Context.BIND_AUTO_CREATE);

}

IUserManager userBinder;

ServiceConnection conn=new ServiceConnection() {



    @Override

    public void onServiceDisconnected(ComponentName name) {

        // TODO Auto-generated method stub



    }



    @Override

    public void onServiceConnected(ComponentName name, IBinder service) {

        // TODO Auto-generated method stub

        userBinder=IUserManager.Stub.asInterface(service);

    }

};

}


//User.java

package string.pub.binder;

import android.os.Parcel;

import android.os.Parcelable;

public class User implements Parcelable{

public String userName;

public String pwd;

public int sex;

public String name;

@Override

public int describeContents() {

    // TODO Auto-generated method stub

    return 0;

}

@Override

public void writeToParcel(Parcel dest, int flags) {

    // TODO Auto-generated method stub

    dest.writeString(userName);

    dest.writeString(pwd);

    dest.writeInt(sex);

    dest.writeString(name);

}

public static final Parcelable.Creator CREATOR=new Creator() {

    @Override

    public User[] newArray(int size) {

        // TODO Auto-generated method stub

        return new User[size];

    }



    @Override

    public User createFromParcel(Parcel source) {

        // TODO Auto-generated method stub

        User result=new User();

        result.userName=source.readString();

        result.pwd=source.readString();

        result.sex=source.readInt();

        result.name=source.readString();

        return result;

    }

};

@Override

public String toString() {

    return "UserBean [userName=" + userName + ", pwd=" + pwd + ", sex="

            + sex + ", name=" + name + "]";

}

}


// IUserManager.aidl

package string.pub.binder;

import string.pub.binder.User;

interface IUserManager{

 boolean register(in User u);

 boolean login(in User u);

 boolean modified(in User u);

}

//User.aidl

package string.pub.binder;

parcelable User;


//IBinderService.java

package string.pub.service;



import java.util.ArrayList;



import string.pub.binder.IUserManager;

import string.pub.binder.User;

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

import android.os.RemoteException;



public class IBinderService extends Service {

    ArrayList<User> listUser=new ArrayList<User>();

    @Override

    public IBinder onBind(Intent intent) {

        // TODO Auto-generated method stub

        return userBinder;

    }



    IBinder userBinder=new IUserManager.Stub(){



        @Override

        public boolean register(User u) throws RemoteException {

            // TODO Auto-generated method stub

            return listUser.add(u);

        }



        @Override

        public boolean login(User u) throws RemoteException {

            // TODO Auto-generated method stub

            for(int i=0;i<listUser.size();i++){

                if((listUser.get(i)).userName.equals(u.userName)){

                    return true;

                }

            }

            return false;

        }



        @Override

        public boolean modified(User u) throws RemoteException {

            // TODO Auto-generated method stub

            for(int i=0;i<listUser.size();i++){

                User temp=new User();

                if((temp=listUser.get(i)).userName.equals(u.userName)){

                    listUser.remove(temp);

                    listUser.add(u);

                    return true;

                }

            }

面试复习笔记:

这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。
节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

《960页Android开发笔记》

《1307页Android开发面试宝典》

包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

960页Android开发笔记》**

[外链图片转存中…(img-DFaHnPHG-1720102933768)]

《1307页Android开发面试宝典》

包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

[外链图片转存中…(img-B9Ex59gf-1720102933769)]

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值