/**
* 作者:叶应是叶
* 时间:2017/8/25 23:31
* 描述:
*/
public class Book implements Parcelable {
private String name;
public Book(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "book name:" + name;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.name);
}
public void readFromParcel(Parcel dest) {
name = dest.readString();
}
protected Book(Parcel in) {
this.name = in.readString();
}
public static final Creator<Book> CREATOR = new Creator<Book>() {
@Override
public Book createFromParcel(Parcel source) {
return new Book(source);
}
@Override
public Book[] newArray(int size) {
return new Book[size];
}
};
}
package com.czy.server; parcelable Book;
package com.czy.server;
import com.czy.server.Book;
interface BookController {
List<Book> getBookList();
void addBookInOut(inout Book book);
}
/**
* 作者:叶应是叶
* 时间:2017/8/26 0:07
* 描述:
*/
public class AIDLService extends Service {
private final String TAG = "Server";
private List<Book> bookList;
public AIDLService() {
}
@Override
public void onCreate() {
super.onCreate();
bookList = new ArrayList<>();
initData();
}
private void initData() {
Book book1 = new Book("活着");
Book book2 = new Book("或者");
Book book3 = new Book("叶应是叶");
Book book4 = new Book("https://github.com/leavesC");
Book book5 = new Book("http://www.jianshu.com/u/9df45b87cfdf");
Book book6 = new Book("http://blog.csdn.net/new_one_object");
bookList.add(book1);
bookList.add(book2);
bookList.add(book3);
bookList.add(book4);
bookList.add(book5);
bookList.add(book6);
}
private final BookController.Stub stub = new BookController.Stub() {
@Override
public List<Book> getBookList() throws RemoteException {
return bookList;
}
@Override
public void addBookInOut(Book book) throws RemoteException {
if (book != null) {
book.setName("服务器改了新书的名字 InOut");
bookList.add(book);
} else {
Log.e(TAG, "接收到了一个空对象 InOut");
}
}
};
@Override
public IBinder onBind(Intent intent) {
return stub;
}
}
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <Button android:id="@+id/btn_getBookList" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="获取书籍列表" /> <Button android:id="@+id/btn_addBook_inOut" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="InOut 添加书籍" /> </LinearLayout>
/**
* 作者:叶应是叶
* 时间:2017/8/26 0:34
* 描述:
*/
public class MainActivity extends AppCompatActivity {
private final String TAG = "Client";
private BookController bookController;
private boolean connected;
private List<Book> bookList;
private ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
bookController = BookController.Stub.asInterface(service);
connected = true;
}
@Override
public void onServiceDisconnected(ComponentName name) {
connected = false;
}
};
private View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_getBookList:
if (connected) {
try {
bookList = bookController.getBookList();
} catch (RemoteException e) {
e.printStackTrace();
}
log();
}
break;
case R.id.btn_addBook_inOut:
if (connected) {
Book book = new Book("这是一本新书 InOut");
try {
bookController.addBookInOut(book);
Log.e(TAG, "向服务器以InOut方式添加了一本新书");
Log.e(TAG, "新书名:" + book.getName());
} catch (RemoteException e) {
e.printStackTrace();
}
}
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_getBookList).setOnClickListener(clickListener);
findViewById(R.id.btn_addBook_inOut).setOnClickListener(clickListener);
bindService();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (connected) {
unbindService(serviceConnection);
}
}
private void bindService() {
Intent intent = new Intent();
intent.setPackage("com.czy.server");
intent.setAction("com.czy.server.action");
bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
}
private void log() {
for (Book book : bookList) {
Log.e(TAG, book.toString());
}
}
}
package com.czy.server;
import com.czy.server.Book;
interface BookController {
List<Book> getBookList();
void addBookInOut(inout Book book);
void addBookIn(in Book book);
void addBookOut(out Book book);
}
private final BookController.Stub stub = new BookController.Stub() {
@Override
public List<Book> getBookList() throws RemoteException {
return bookList;
}
@Override
public void addBookInOut(Book book) throws RemoteException {
if (book != null) {
book.setName("服务器改了新书的名字 InOut");
bookList.add(book);
} else {
Log.e(TAG, "接收到了一个空对象 InOut");
}
}
@Override
public void addBookIn(Book book) throws RemoteException {
if (book != null) {
book.setName("服务器改了新书的名字 In");
bookList.add(book);
} else {
Log.e(TAG, "接收到了一个空对象 In");
}
}
@Override
public void addBookOut(Book book) throws RemoteException {
if (book != null) {
Log.e(TAG, "客户端传来的书的名字:" + book.getName());
book.setName("服务器改了新书的名字 Out");
bookList.add(book);
} else {
Log.e(TAG, "接收到了一个空对象 Out");
}
}
};
private View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_getBookList:
if (connected) {
try {
bookList = bookController.getBookList();
} catch (RemoteException e) {
e.printStackTrace();
}
log();
}
break;
case R.id.btn_addBook_inOut:
if (connected) {
Book book = new Book("这是一本新书 InOut");
try {
bookController.addBookInOut(book);
Log.e(TAG, "向服务器以InOut方式添加了一本新书");
Log.e(TAG, "新书名:" + book.getName());
} catch (RemoteException e) {
e.printStackTrace();
}
}
break;
case R.id.btn_addBook_in:
if (connected) {
Book book = new Book("这是一本新书 In");
try {
bookController.addBookIn(book);
Log.e(TAG, "向服务器以In方式添加了一本新书");
Log.e(TAG, "新书名:" + book.getName());
} catch (RemoteException e) {
e.printStackTrace();
}
}
break;
case R.id.btn_addBook_out:
if (connected) {
Book book = new Book("这是一本新书 Out");
try {
bookController.addBookOut(book);
Log.e(TAG, "向服务器以Out方式添加了一本新书");
Log.e(TAG, "新书名:" + book.getName());
} catch (RemoteException e) {
e.printStackTrace();
}
}
break;
}
}
};
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有