Android中aidl实现Activity与service进行通信和回调
来源:互联网 发布:es6循环json 编辑:程序博客网 时间:2024/06/01 07:43
service一直再运行,通过bindService拿到service的代理,并将自己到回调对象注册过去,就能实现调用service中的方法,和在service中调用本地activity到方法。做到了进程间通信。
- package com.test;
- import com.test.Ilisten;
- interface ImyserviceManager
- {
- int add(int a,int b);
- String show();
- void register(Ilistenlisten);
- }
RemoteService.java
- package com.test;
- import android.app.Service;
- import android.content.Intent;
- import android.os.IBinder;
- import android.os.RemoteException;
- import android.util.Log;
- public class RemoteServiceextends Service
- {
- Ilisten myListener = null;
- public class ServiceImplextends ImyserviceManager.Stub
- {
- public int add(int a,int b)throwsRemoteException
- {
- if(myListener!= null)
- myListener.change("this is call back!");
- return (a+b);
- }
-
- public String show()throwsRemoteException
- {
- return "hello world!";
- }
- public void register(Ilistenlisten) throws RemoteException
- {
- // TODO Auto-generated method stub
- myListener = listen;
- }
- }
-
- @Override
- public IBinder onBind(Intent intent)
- {
- // TODO Auto-generated method stub
- return new ServiceImpl();
- }
- @Override
- public int onStartCommand(Intent intent,int flags,int startId){
- // TODO Auto-generated method stub
- Log.i("test","I am running .......................");
- return super.onStartCommand(intent,flags, startId);
-
- }
-
-
- }
Ilisten.aidl
- package com.test;
- interface Ilisten
- {
- void change(String a);
- }
TestAidl.java
- package com.test;
- 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.TextView;
- public class TestAidlextends Activity
- {
- String str = null;
- private ImyserviceManager myManager;
- Button myButton;
- private TextView textView;
- private Button button1;
- private Button button2;
-
- private ServiceConnection serviceConnection=new ServiceConnection()
- {
- public void onServiceConnected(ComponentName name, IBinder service)
- {
- // TODO Auto-generated method stub+
-
- myManager=ImyserviceManager.Stub.asInterface(service);
- try {
- Log.i("test-------",myManager.show());
- TextView textView=(TextView)findViewById(R.id.text);
- textView.setText(str);
- myManager.register(new myListener());
-
- } catch (RemoteException e){
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- public void onServiceDisconnected(ComponentNamename)
- {
- // TODO Auto-generated method stub
-
- }
-
- };
-
- public class myListenerextends Ilisten.Stub
- {
- public void change(String a)throws RemoteException
- {
- // TODO Auto-generated method stub
-
- button1.setText(a);
-
- }
-
- }
-
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- bindService(new Intent(TestAidl.this, RemoteService.class), serviceConnection,Context.BIND_AUTO_CREATE);
-
- textView=(TextView)findViewById(R.id.text);
-
- button1 = (Button) findViewById(R.id.b1);
-
- button1.setOnClickListener(newView.OnClickListener(){
-
- public void onClick(View v)
- {
- try {
- button1.setText(myManager.show());
- //myManager.add(1, 2);
- } catch (RemoteException e){
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- });
-
- button2= (Button)findViewById(R.id.b2);
- button2.setOnClickListener(newView.OnClickListener(){
-
- public void onClick(View v)
- {
- try {
- myManager.add(2, 3);
- } catch (RemoteException e){
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- });
-
- }
- }
http://blog.chinaunix.net/uid-25677340-id-2854775.html
0 0
- Android中aidl实现Activity与service进行通信和回调
- Android AIDL线程通信之Service回调客户端Activity
- Android组件---Service,AIDL,Service与Activity之间的通信
- Activity中使用AIDL让Service与Activity通信
- 使用android中的AIDL让Service与Activity通信
- android service与activity进行通信
- Service与Activity通信与AIDL
- Android studio 使用aidl和service进行进程间通信
- android static实现Service与Activity中Handler通信
- android static实现Service与Activity中Handler通信
- android static实现Service与Activity中Handler通信
- 使用android中的AIDL让Service与Activity通信(service回调activity)
- 使用android中的AIDL让Service与Activity通信(service回调activity)
- [实例教程]使用android中的AIDL让Service与Activity通信(service回调activity)
- 使用android中的AIDL让Service与Activity通信(service回调activity)
- 使用android中的AIDL让Service与Activity通信(service回调activity)
- 使用android中的AIDL让Service与Activity互相通信(service回调activity)
- 使用android中的AIDL让Service与Activity通信(service回调activity)
- Spring中ClassPathXmlApplicationContext类的简单使用
- 短信的收发及在android模拟器之间实践
- 使用Java调用DLL动态链接库(如何在Java中调用DLL方法)
- 自定义DateConverter
- 《设计之下——搜狐新闻客户端的用户体验设计(全彩)》
- Android中aidl实现Activity与service进行通信和回调
- cgo 用法示例
- WebKit CSS3 动画基础
- 九度oj 题目1485:W's Cipher
- 玩转Web之JavaScript(三)-----javaScript语法总结(三) 窗口/滚动条/文本的相关语法
- Eclipse导入工程遇到的一些问题之中文乱码
- 沉鱼
- Linux常用命令-查看常用系统信息,查看cpu核数
- web架构 之 Nginx负载均衡 负载策略配置