- 浏览: 385248 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (269)
- FY_UML (3)
- FY_JAVA (12)
- FY_JavaScript脚本 (7)
- FY_JSP (3)
- FY_Tapestry框架 (12)
- FY_Spring框架 (3)
- FY_Manager (5)
- FY_Junit(单元测试) (3)
- SERVER (14)
- FY_Struts2框架 (3)
- FY_SVN (2)
- FY_NoSQL (2)
- FY_jquery_sir (13)
- FY_hibernate_sir (8)
- FY_设计模式_sir (6)
- FY_Extjs_sir (10)
- FY_CI_sir (5)
- FY_Oracle_sir (11)
- FY_MySql_sir (10)
- FY_Hadoop_sir (3)
- FY_SOA_sir (1)
- 中文分词技术 (1)
- FY_Android (52)
- FY_架构 (2)
- FY_PhoneGap (2)
- FY_Webstorm (5)
- FY_Sencha Touch (3)
- HTML5应用快速开发 (1)
- FY_python (0)
- HADOOP (1)
- AI (0)
最新评论
-
antao592:
楼主,HkDataSourceWrapper中的getCurr ...
结合spring jdbc 实现分表分库的数据库访问构思 -
bonait:
不错,看看我的这个怎么样www.zipin168.com
So Easy京东商城 -
chenzheng8975:
...
So Easy京东商城 -
yzhenxing:
我导入demo后少com.google.android.gms ...
google地图demo -
echoaiya:
非常感谢~~
google地图demo
--------------------------------------------AndroidManifest.xml---------------------------------
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kawa.ch30"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:enabled="true" android:name=".RemoteService">
<intent-filter>
<action android:name="com.kawa.ch30.aidl.IMyService" />
</intent-filter>
</service>
</application>
</manifest>
--------------------------------------------layout activity_main.xml---------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btn_add"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="add" >
</Button>
<Button
android:id="@+id/btn_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="list" >
</Button>
</LinearLayout>
--------------------------------------------Activity MainActivity.java----------------------------
package com.kawa.ch30;
import java.util.List;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import com.kawa.ch30.aidl.IMyService;
import com.kawa.ch30.aidl.Person;
public class MainActivity extends Activity {
private Button btn_add;
private Button btn_list;
private IMyService mRemoteService;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViews();
setListeners();
/*Activity绑定指定的Service*/
bindService(new Intent("com.kawa.ch30.aidl.IMyService"), mRemoteConnection,
Context.BIND_AUTO_CREATE);
}
private void findViews() {
btn_add = (Button) findViewById(R.id.btn_add);
btn_list = (Button) findViewById(R.id.btn_list);
}
private void setListeners() {
btn_add.setOnClickListener(onClickListener);
btn_list.setOnClickListener(onClickListener);
}
/* Activity绑定Service的状态监听 */
private ServiceConnection mRemoteConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName paramComponentName) {
mRemoteService = null;
Log.v("aidl", "onServiceDisconnected()");
}
@Override
public void onServiceConnected(ComponentName paramComponentName,
IBinder paramIBinder) {
mRemoteService = IMyService.Stub.asInterface(paramIBinder);
Log.v("aidl", "onServiceConnected()");
}
};
private OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_add:// 添加事件
Person person = new Person();
person.setAge(100);
person.setName("fy");
person.setTelNumber("12580");
try {
mRemoteService.savePersonInfo(person);// 保存
} catch (RemoteException e) {
e.printStackTrace();
Log.v("aidl", e.getMessage());
}
break;
case R.id.btn_list:// 列表事件
try {
// 获取后台Service数据
List<Person> personList = mRemoteService.getAllPerson();
if (null != personList) {
Log.v("aidl", "person List size:" + personList.size());
Toast.makeText(MainActivity.this,
"person List size:" + personList.size(), Toast.LENGTH_SHORT)
.show();
}
} catch (RemoteException e) {
e.printStackTrace();
}
break;
}
}
};
}
--------------------------------------------Service RemoteService.java-------------------------
package com.kawa.ch30;
import java.util.LinkedList;
import java.util.List;
import com.kawa.ch30.aidl.IMyService;
import com.kawa.ch30.aidl.Person;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
public class RemoteService extends Service {
private LinkedList<Person> personList = new LinkedList<Person>();
public RemoteService() {
}
@Override
public IBinder onBind(Intent paramIntent) {
return mBinder;
}
private final IMyService.Stub mBinder = new IMyService.Stub() {
@Override
public void savePersonInfo(Person person) throws RemoteException {
if (null != person) {
personList.add(person);
}
}
@Override
public List<Person> getAllPerson() throws RemoteException {
return personList;
}
};
}
--------------------------------------------aidl目录 Person.aidl---------------------------------
package com.kawa.ch30.aidl;
parcelable Person;
--------------------------------------------aidl目录 IMyService.aidl----------------------------
package com.kawa.ch30.aidl;
import java.util.List;
import com.kawa.ch30.aidl.Person;
interface IMyService {
void savePersonInfo(in Person person);
List<Person> getAllPerson();
}
--------------------------------------------aidl目录 Person.java--------------------------------
package com.kawa.ch30.aidl;
import android.os.Parcel;
import android.os.Parcelable;
/**
*
* 项目名称:com.kawa.ch30
*
* 类名称:Person
*
* 类描述:
*
* 通过writeToParcel将你的对象映射成Parcel对象,
*
* 再通过createFromParcel将Parcel对象映射成你的对象。
*
* 也可以将Parcel看成是一个流,通过writeToParcel把对象写到流里面,
*
* 在通过createFromParcel从流里读取对象,只不过这个过程需要你来实现,
*
* 因此写的顺序和读的顺序必须一致
*
* 创建人:fy
*
* 创建时间:2012-10-5 上午9:57:38
*
* Copyright (c) 方勇-版权所有
*/
public class Person implements Parcelable {
private String name;
private String telNumber;
private int age;
public Person() {
}
public Person(Parcel parcel) {
name = parcel.readString();
telNumber = parcel.readString();
age = parcel.readInt();
}
/* 添加一个静态成员,名为CREATOR,该对象实现了Parcelable.Creator接口 */
public static final Parcelable.Creator<Person> CREATOR =
new Parcelable.Creator<Person>() {
@Override
public Person createFromParcel(Parcel paramParcel) {
return new Person(paramParcel);
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
@Override
public int describeContents() {
return 0;
}
/* 把javanbean中的数据写到Parcel */
@Override
public void writeToParcel(Parcel paramParcel, int paramInt) {
paramParcel.writeString(name);
paramParcel.writeString(telNumber);
paramParcel.writeInt(age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTelNumber() {
return telNumber;
}
public void setTelNumber(String telNumber) {
this.telNumber = telNumber;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
--------------------------------------------效果---------------------------------------------------
点击顺序【add】→【add】→【add】→【list】
发表评论
-
史上最快 Android N(安卓7.0)运行效率暴增至600%
2016-10-15 10:08 928谷歌I/O 2016开发者大会在公司总部正式拉开 ... -
So Easy京东商城
2014-12-10 16:51 1578So Easy京东商城 我和17位小伙伴们 ... -
过期Gallery取代方案horizontalscrollView之菜单导航效果
2014-03-23 16:19 2413效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之京东效果
2014-03-23 15:57 3880效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之幻灯片效果
2014-03-21 17:33 2621效果 ------------------------- ... -
tabhostandbadgeview
2014-03-19 13:45 1034效果 -------------------------- ... -
Android优秀开源项目大全
2014-03-18 15:17 1983以下是开源项目 1、and ... -
Android分页控件xlistview
2014-03-18 14:51 1673strings.xml ----------------- ... -
过期Gallery取代方案horizontalscrollView之普通画廊
2014-03-17 22:48 2442activity_main.xml ---------- ... -
viewpage
2014-03-17 18:08 1059strings.xml ----------------- ... -
FragmentStatePagerAdapter分页
2014-03-17 17:27 806ViewPager ViewPager 如 ... -
FragmentPagerAdapter与FragmentStatePagerAdapter差异
2014-03-17 17:20 1317简介 平常使用的FragmentPagerAdapter和F ... -
抽屉菜单
2014-03-16 12:51 1843strings.xml ----------------- ... -
px和dip以及sp的区别
2014-03-08 17:01 717显示单位px和dip以及sp的区别 dip: devi ... -
fragment生命周期
2014-03-06 16:59 890Fragment必须被写成可重用的模块。因为fragmen ... -
过期API_AlertDialog
2014-03-02 10:07 1151layout----------------------- ... -
Android_Jni 操作指南
2014-01-10 14:45 948Android_Jni 操作指南 NDK(Nati ... -
各种各样圆形进度条
2013-11-11 16:30 563http://www.apkbus.com/android-1 ... -
红杏出墙__实训版
2013-04-20 18:59 1082红杏出墙__实训版 -
google地图demo
2013-04-09 14:25 3202---------------------------- ...
相关推荐
AIDL(Android Interface Definition Language)是Android系统提供的一种接口定义语言,用于在不同进程间进行通信,特别是当服务(Service)需要与客户端(如Activity)跨进程交互时。AIDL帮助开发者定义接口,使得...
在Android应用开发中,Service和AIDL(Android Interface Definition Language)是两个重要的组件。Service用于在后台执行长时间运行的任务,而AIDL则用于进程间通信(IPC, Inter-Process Communication)。下面将...
Android下Aidl的使用,详细请参见博客:http://www.cnblogs.com/plokmju/p/android_Service_aidl_NormalType.html 和 http://www.cnblogs.com/plokmju/p/android_Service_aidl_CustomType.html
Android之Service AIDL 远程服务 实现比较大小 先运行服务端 再运行客户端
在Android Studio中,创建AIDL文件通常是在服务(Service)所在的目录下新建一个`.aidl`扩展名的文件。例如,我们可以创建一个名为`IAidlInterface.aidl`的文件,然后在其中定义服务的接口方法: ```aidl package ...
现在,我们来详细探讨如何通过AIDL在Android中实现RemoteService。 首先,让我们理解AIDL的基本概念。AIDL本质上是一个接口定义语言,它允许你在Android应用中定义一套接口,这些接口可以被其他应用所调用。当你...
在Android应用开发中,`Service`和`AIDL(Android Interface Definition Language)`是两个非常重要的组件,它们分别用于后台长时间运行的任务和服务间通信。本文将深入探讨这两个概念以及如何通过`AIDL`来实现服务...
在Android开发中,AIDL(Android Interface Definition Language)是一种重要的工具,用于实现应用程序间的跨进程通信(IPC,Inter-Process Communication)。AIDL使得一个应用能够暴露其服务给其他应用调用,即使...
**Android AIDL解析** 在Android系统中,AIDL(Android Interface Definition Language)是一种接口定义语言,用于实现进程间通信(IPC, Inter-Process Communication)。它允许应用程序组件在不同进程中运行并相互...
**Android AIDL(Android Interface Definition Language)详解** 在Android系统中,进程间的通信(IPC, Inter-Process Communication)是至关重要的,特别是在开发大型、复杂的应用时。AIDL(Android Interface ...
Android提供多种IPC方式,其中AIDL(Android Interface Definition Language)是一种强大的工具,用于定义服务接口并使得不同进程间能透明地调用对方的方法。本篇文章将深入探讨如何在Android中使用AIDL来实现进程间...
在这个"android service+aidl应用"中,可能包含了一个示例项目`serriveTest`,它展示了如何结合Service和AIDL来实现跨进程通信。项目中可能有一个Service,通过AIDL定义的接口对外提供服务,例如播放音乐。客户端...
描述 :整理了下android中的aidl, 项目中主要是用作于Activity和Service之间进行跨进程的通信和调用,定义了几种基本类型的接口,其中涵盖了自定义参数类型的传递。 注意: 解压后有两个android程序,一个client端 ...
Android项目之AidlDemo(简单的aidl的例子)。AIDL是Android中IPC(Inter-Process Communication)方式中的一种,AIDL是Android Interface definition language的缩写。需要的小伙伴自请下载。
深入理解aidl和service机制。 aidl是android进行系统间通信的借口描述语言,仔细分析由aidl生成的java类,你会发现code是用的是proxy design pattern,能看到这层就会觉得google的设计其实真的是很巧妙。如果需要...
**Android的AIDL(Android Interface Definition Language)是Google为Android平台设计的一种接口定义语言,用于在Android应用程序的不同组件之间实现进程间通信(IPC,Inter-Process Communication)。在本示例中,...
在目录src/main 下新建了aidl 文件夹之后,在aidl文件夹中也创建了相同的包路径, 创建AIDL文件 XXX.aidl 如果XXX.aidl引用了一个java下的model例如引用了a.b.c.Model; 则需要在XXX.aidl文件中声明import a.b.c....
为使应用程序之间能够彼此通信,Android提供了IPC (Inter Process Communication,进程间通信)的一种独特实现: AIDL (Android Interface Definition Language, Android接口定义语言)。 建立两个Android项目,...
在Android系统中,AIDL(Android Interface Definition Language)是一种接口定义语言,用于处理应用程序间的跨进程通信(IPC,Inter-Process Communication)。当我们需要一个应用程序组件(如服务Service)与另一...
**Android aidl Binder框架浅析** 在Android系统中,服务间的通信是通过Binder机制实现的,它是Android系统中进程间通信(IPC)的核心组件。Binder框架允许不同进程间的对象互相调用方法,使得数据和操作可以在不同...