服务端

MainActivity.java

  1. package com.qf.day24_aidl_wordserver;
  2. import android.app.Activity;
  3. import android.database.Cursor;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.EditText;
  7. import android.widget.ListView;
  8. import android.widget.SimpleCursorAdapter;
  9. public class MainActivity extends Activity {
  10. private EditText etEn,etCh;
  11. private ListView lv;
  12. private MyOpenDbHelper helper;
  13. @Override
  14. protected void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.activity_main);
  17. //初始化View
  18. initView();
  19. helper = new MyOpenDbHelper(getApplicationContext());
  20. getData();
  21. }
  22. public void initView() {
  23. etEn = (EditText) findViewById(R.id.et_en);
  24. etCh = (EditText) findViewById(R.id.et_ch);
  25. lv = (ListView) findViewById(R.id.lv);
  26. }
  27. //点击进行保存
  28. public void saveClick(View v){
  29. String etEnStr = etEn.getText().toString().trim();
  30. String etChStr = etCh.getText().toString().trim();
  31. String sql = "insert into tb_words(word,detail) values(?,?)";
  32. //添加数据到数据库
  33. helper.execSqlData(sql, new String[]{etEnStr,etChStr});
  34. getData();
  35. }
  36. //查询数据展示到LIstVIew
  37. public void getData(){
  38. String sql = "select * from tb_words";
  39. Cursor cursor = helper.queryData(sql, null);
  40. SimpleCursorAdapter adapter = new SimpleCursorAdapter
  41. (MainActivity.this,
  42. R.layout.item,
  43. cursor,
  44. new String[]{"word","detail"},
  45. new int[]{R.id.tv_en,R.id.tv_ch},
  46. SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
  47. lv.setAdapter(adapter);
  48. }
  49. }

MyOpenDbHelper.java

  1. package com.qf.day24_aidl_wordserver;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import android.content.Context;
  7. import android.database.Cursor;
  8. import android.database.sqlite.SQLiteDatabase;
  9. import android.database.sqlite.SQLiteDatabase.CursorFactory;
  10. import android.database.sqlite.SQLiteOpenHelper;
  11. public class MyOpenDbHelper extends SQLiteOpenHelper{
  12. private static final String NAME ="db_words.db";
  13. private static final int VERSION =1;
  14. private SQLiteDatabase db ;
  15. public MyOpenDbHelper(Context context, String name, CursorFactory factory,
  16. int version) {
  17. super(context, name, factory, version);
  18. // TODO Auto-generated constructor stub
  19. }
  20. public MyOpenDbHelper(Context context) {
  21. super(context, NAME, null, VERSION);
  22. // TODO Auto-generated constructor stub
  23. db = getReadableDatabase();
  24. }
  25. @Override
  26. public void onCreate(SQLiteDatabase db) {
  27. // TODO Auto-generated method stub
  28. String sql ="create table if not exists tb_words(_id integer primary key autoincrement,word,detail)";
  29. db.execSQL(sql);
  30. }
  31. @Override
  32. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  33. // TODO Auto-generated method stub
  34. }
  35. //查询
  36. public Cursor queryData(String sql, String[] selectionArgs){
  37. return db.rawQuery(sql, selectionArgs);
  38. }
  39. // 增 删改
  40. public boolean execSqlData(String sql, Object[] bindArgs){
  41. try {
  42. if(bindArgs!=null){
  43. db.execSQL(sql, bindArgs);
  44. }else{
  45. db.execSQL(sql);
  46. }
  47. return true;
  48. } catch (Exception e) {
  49. // TODO: handle exception
  50. return false;
  51. }
  52. }
  53. //查询所有数据 返回List<>
  54. public List<Map<String,Object>> selectData(String sql, String[] selectionArgs){
  55. List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
  56. Cursor cusor = db.rawQuery(sql, selectionArgs);
  57. while(cusor.moveToNext()){
  58. Map<String,Object> map = new HashMap<String, Object>();
  59. for(int i=0;i<cusor.getColumnCount();i++){
  60. map.put(cusor.getColumnName(i), cusor.getString(i));
  61. }
  62. list.add(map);
  63. }
  64. return list;
  65. }
  66. }

MyService.java

  1. package com.qf.day24_aidl_wordserver;
  2. import java.util.List;
  3. import java.util.Map;
  4. import android.app.Service;
  5. import android.content.Intent;
  6. import android.os.IBinder;
  7. import android.os.RemoteException;
  8. import com.qf.day24_aidl_wordserver.MyInterfaceWord.Stub;
  9. public class MyService extends Service{
  10. private MyOpenDbHelper helper;
  11. @Override
  12. public IBinder onBind(Intent intent) {
  13. // TODO Auto-generated method stub
  14. return new MyBinder();
  15. }
  16. class MyBinder extends Stub{
  17. @Override
  18. public String getValues(String word) throws RemoteException {
  19. // TODO Auto-generated method stub
  20. String sql = "select * from tb_words where word = ?";
  21. List<Map<String, Object>> list = helper.selectData(sql, new String[]{word});
  22. return list.toString();
  23. }
  24. }
  25. @Override
  26. public void onCreate() {
  27. // TODO Auto-generated method stub
  28. super.onCreate();
  29. helper = new MyOpenDbHelper(getApplicationContext());
  30. }
  31. @Override
  32. public boolean onUnbind(Intent intent) {
  33. // TODO Auto-generated method stub
  34. return super.onUnbind(intent);
  35. }
  36. @Override
  37. public void onDestroy() {
  38. // TODO Auto-generated method stub
  39. super.onDestroy();
  40. }
  41. }

MyInterfaceWord.aidl

  1. package com.qf.day24_aidl_wordserver;
  2. interface MyInterfaceWord {
  3. String getValues(String word);
  4. }

清单文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.qf.day24_aidl_wordserver"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6. <uses-sdk
  7. android:minSdkVersion="14"
  8. android:targetSdkVersion="18" />
  9. <application
  10. android:allowBackup="true"
  11. android:icon="@drawable/ic_launcher"
  12. android:label="@string/app_name"
  13. android:theme="@style/AppTheme" >
  14. <activity
  15. android:name="com.qf.day24_aidl_wordserver.MainActivity"
  16. android:label="@string/app_name" >
  17. <intent-filter>
  18. <action android:name="android.intent.action.MAIN" />
  19. <category android:name="android.intent.category.LAUNCHER" />
  20. </intent-filter>
  21. </activity>
  22. <service android:name=".MyService">
  23. <intent-filter >
  24. <action android:name="com.qf.day24_aidl_wordserver.MyService"/>
  25. </intent-filter>
  26. </service>
  27. </application>
  28. </manifest>

布局文件

activity_main.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical"
  6. tools:context=".MainActivity" >
  7. <EditText
  8. android:id="@+id/et_en"
  9. android:layout_width="match_parent"
  10. android:layout_height="wrap_content"
  11. android:hint="请输入英文..." />
  12. <EditText
  13. android:id="@+id/et_ch"
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content"
  16. android:hint="请输入中文..." />
  17. <Button
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"
  20. android:onClick="saveClick"
  21. android:text="保存"
  22. />
  23. <TextView
  24. android:layout_width="match_parent"
  25. android:layout_height="wrap_content"
  26. android:background="#00ff00"
  27. android:text="以下展示内容"
  28. />
  29. <ListView
  30. android:id="@+id/lv"
  31. android:layout_width="match_parent"
  32. android:layout_height="match_parent"
  33. ></ListView>
  34. </LinearLayout>

item.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6. <TextView
  7. android:id="@+id/tv_en"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:text="tv"
  11. android:textColor="#f00"
  12. />
  13. <TextView
  14. android:id="@+id/tv_ch"
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. android:text="tv"
  18. android:textColor="#00f"
  19. />
  20. </LinearLayout>

客户端

MainActivity.java

  1. package com.qf.day24_aidl_wordclient;
  2. import com.qf.day24_aidl_wordserver.MyInterfaceWord;
  3. import com.qf.day24_aidl_wordserver.MyInterfaceWord.Stub;
  4. import android.app.Activity;
  5. import android.content.ComponentName;
  6. import android.content.Context;
  7. import android.content.Intent;
  8. import android.content.ServiceConnection;
  9. import android.os.Bundle;
  10. import android.os.IBinder;
  11. import android.os.RemoteException;
  12. import android.view.View;
  13. import android.widget.EditText;
  14. import android.widget.TextView;
  15. public class MainActivity extends Activity {
  16. private EditText etWord;
  17. private TextView tvShow;
  18. private MyInterfaceWord myInterfaceWord;
  19. @Override
  20. protected void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.activity_main);
  23. etWord = (EditText) findViewById(R.id.et_word);
  24. tvShow = (TextView) findViewById(R.id.tv_show);
  25. ServiceConnection conn = new ServiceConnection() {
  26. @Override
  27. public void onServiceDisconnected(ComponentName name) {
  28. // TODO Auto-generated method stub
  29. }
  30. @Override
  31. public void onServiceConnected(ComponentName name, IBinder service) {
  32. // TODO Auto-generated method stub
  33. myInterfaceWord = Stub.asInterface(service);
  34. }
  35. };
  36. Intent intent = new Intent("com.qf.day24_aidl_wordserver.MyService");
  37. //6.0必须加上
  38. intent.setPackage("com.qf.day24_aidl_wordserver");
  39. bindService(intent, conn, Context.BIND_AUTO_CREATE);
  40. }
  41. public void MyClick(View v){
  42. try {
  43. String str = myInterfaceWord.getValues(etWord.getText().toString().trim());
  44. tvShow.setText(str);
  45. } catch (RemoteException e) {
  46. // TODO Auto-generated catch block
  47. e.printStackTrace();
  48. }
  49. }
  50. }

MyInterfaceWord .java

  1. package com.qf.day24_aidl_wordserver;
  2. interface MyInterfaceWord {
  3. String getValues(String word);
  4. }

AndroidManifest.xml 清单文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.qf.day24_aidl_wordclient"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6. <uses-sdk
  7. android:minSdkVersion="8"
  8. android:targetSdkVersion="18" />
  9. <application
  10. android:allowBackup="true"
  11. android:icon="@drawable/ic_launcher"
  12. android:label="@string/app_name"
  13. android:theme="@style/AppTheme" >
  14. <activity
  15. android:name="com.qf.day24_aidl_wordclient.MainActivity"
  16. android:label="@string/app_name" >
  17. <intent-filter>
  18. <action android:name="android.intent.action.MAIN" />
  19. <category android:name="android.intent.category.LAUNCHER" />
  20. </intent-filter>
  21. </activity>
  22. </application>
  23. </manifest>

activity_main.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical"
  6. tools:context=".MainActivity" >
  7. <EditText
  8. android:id="@+id/et_word"
  9. android:layout_width="match_parent"
  10. android:layout_height="wrap_content"
  11. android:hint="请输入查询内容" />
  12. <Button
  13. android:layout_width="wrap_content"
  14. android:layout_height="wrap_content"
  15. android:text="查询"
  16. android:onClick="MyClick"
  17. />
  18. <TextView
  19. android:id="@+id/tv_show"
  20. android:layout_width="wrap_content"
  21. android:layout_height="wrap_content"
  22. />
  23. </LinearLayout>

24 AIDL案例的更多相关文章

  1. 2-4 测试案例helloWorld

  2. Android AIDL[Android Interface Definition Language]跨进程通信

    全称与中文名IPC:Inter-Process Communication(进程间通信)Ashmem:Anonymous Shared Memory(匿名共享内存)Binder:Binder(进程间通 ...

  3. [读书笔记]设计原本[The Design of Design]

    第1章 设计之命题 1.设计首先诞生于脑海里,再慢慢逐步成形(实现) 2.好的设计具有概念完整性:统一.经济.清晰.优雅.利落.漂亮... 第2章 工程师怎样进行设计思维——理性模型 1.有序模型的有 ...

  4. Android 中基于 Binder的进程间通信

    摘要:对  Binder 工作机制进行了分析. 首先简述 Android 中 Binder 机制与传统的 Linux 进程间的通信比较,接着对基于 Binder 进程间通信的过程分析 最后结合开发实例 ...

  5. Swiper.js使用方法

    <!DOCTYPE html> <html> <head>  ... <link rel="stylesheet" href=" ...

  6. 二十四、Linux 进程与信号---wait 函数

    24.1 wait 函数说明 24.1.1 waitpid---等待子进程中断或结束 waitpid(等待子进程中断或结束) 相关函数 wait,fork #include <sys/types ...

  7. 《MySQL5.7从入门到精通(视频教学版)》

    · 一:书籍PDF获取途径 pdf 文档 在 此QQ群(668345923) 的群文件里面 学习视频资源 二:书籍介绍 本书主要包括MySQL的安装与配置.数据库的创建.数据表的创建.数据类型和运算符 ...

  8. Python3正则表达式(4)

    正则表示式的子模式 使用()表示一个子模式,括号中的内容作为一个整体出现. (red)+  ==> redred, redredred, 等多个red重复的情况 子模式的扩展语法 案例1 tel ...

  9. 《App,这样设计才好卖》

    <App,这样设计才好卖> 基本信息 作者: (日)池田拓司 译者: 陈筱烟 丛书名: 图灵交互设计丛书 出版社:人民邮电出版社 ISBN:9787115359438 上架时间:2014- ...

随机推荐

  1. [HNOI 2015]实验比较

    Description 小D 被邀请到实验室,做一个跟图片质量评价相关的主观实验.实验用到的图片集一共有 N 张图片,编号为 1 到 N.实验分若干轮进行,在每轮实验中,小 D会被要求观看某两张随机选 ...

  2. ●codeforces 553E Kyoya and Train

    题链: http://codeforces.com/problemset/problem/623/E 题解: FFT,DP 题意: 一个有向图,给出每条边的起点u,终点v,费用c,以及花费每种时间的概 ...

  3. 【BZOJ2243】【SDOI2011】染色

    题意见试题传送门 解题思路:显然是题树剖题. 考虑用线段树维护区间端点颜色与颜色数,这样就可以方便的合并,注意查询的时候对端点的特殊处理即可. 时间效率最高为\( O (m \log^{2} n) \ ...

  4. poj 1696 叉积理解

    Space Ant Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3967   Accepted: 2489 Descrip ...

  5. hdu 4777 树状数组+合数分解

    Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  6. [hdu5608]function

    题意:$\sum_{d|n}f(d)=n^{2}-3n+2$,求$\sum_{i=1}^{n}f(i)\mod 10^{9}+7$ , $n \leqslant 10^{9}$ $\left( T \ ...

  7. 【完整项目】使用Scrapy模拟HTTP POST,获取完美名字

    1. 背景 最近有人委托我给小孩起个名字,说名字最好符合周易五行生克理论,然后给了我个网址,说像是这个网站中的八字测名,输入名字和生辰八字等信息,会给出来这个名字的分数和对未来人生的预测.当父母的自然 ...

  8. javascript 手势(swipeLeft,swipeRight)滑动中使用css3动画卡顿,开启硬件加速

    今天,在做一个移动端项目,遇到了css3动画卡顿的现象. 例图: 在手势滑动中(swipeLeft,swipeRight)遇到了动画卡顿的现象,最后使用了css3动画-webkit-transform ...

  9. 如何理解主函数main中变量(int argc,char *argv[])的含义

    每一个C语言的初学者,都会注意到主函数main()里的两个参数,但是初学者一般不会去关注这两个参数的具体作用,下面我们就来介绍这两个参数的具体作用. main()函数是控制台程序的入口,int mai ...

  10. Spring MVC页面重定向

    以下示例显示如何编写一个简单的基于Web的重定向应用程序,这个应用程序使用重定向将http请求传输到另一个页面. 基于Spring MVC - Hello World实例章节中代码,创建创建一个名称为 ...