`

Android 远程回调

阅读更多

1.点击button 发送Handler1 Message  收到消息  开启线程进行处理

2.收到消息 后调用已经绑定的 mService   mService.sendMail()方法

  mService.sendMailAlarm(SEND_MAIL_TYPE,subject,body.toString()); --Activity类

 

 

Service类

  private final IRemoteService.Stub mBinder = new IRemoteService.Stub() {

 

 public void sendMail(int type, String subjectText, String sendText)
                throws RemoteException {
            Constant.Log("sendMailAlarm", "RunKKKKKK");
            new SendMailAlarmMsgThread(type, subjectText, sendText).start();
        }



 

3 。SendMailAlarmMsgThread  处理完发送 Service Handler2 消息

 

4. 处理接受到的信息后 回调函数调用

Service类

private final RemoteCallbackList<IRemoteServiceCallback> mCallbacks = new RemoteCallbackList<IRemoteServiceCallback>();

 

private void _makeSendMailResultCallbacksWork(int result) {
        Constant.Log("RemoteService", "_makeSendMailResultCallbacksWork");
        // Broadcast to all clients the new value.
        Constant.Log("onSendMailReturn", "RunKKKKKK");
        try {
            final int N = mCallbacks.beginBroadcast();
            for (int i = 0; i < N; i++) {
                try {
                    mCallbacks.getBroadcastItem(i).onSendMailReturn (result);
                } catch (RemoteException e) {
                    Constant.exception(e);
                }
            }
            mCallbacks.finishBroadcast();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 

onSendMailReturn  

在Activity 类中实现

 

 

  private IRemoteServiceCallback mCallback = new IRemoteServiceCallback.Stub() {

     
        @Override
        public void onSetPowerStatusReturn(String arg0, String arg1) throws RemoteException {
            // TODO Auto-generated method stub

        }

        @Override
        public void onSendMailReturn(int arg0) throws RemoteException {
            // TODO Auto-generated method stub
            LogOut("call method : onSendMailReturn()---" + arg0);
            // if (!isClickMailBtn) return ;
            // isClickMailBtn = false ;
            switch (arg0) {
                case 0:
                    mHandler.removeMessages(MAIL_RECEIVE_SUCCESS_RESULT_ORDER);
                    mHandler.sendEmptyMessage(MAIL_RECEIVE_SUCCESS_RESULT_ORDER);

                    break;
                case 1:
                    mHandler.removeMessages(MAIL_RECEIVE_FAILURE_RESULT_ORDER);
                    mHandler.sendEmptyMessage(MAIL_RECEIVE_FAILURE_RESULT_ORDER);
                    break;
                default:
                    break;
            }
        }
    };

 处理完后发送Handler1 消息 更新画面

 

 

耗时操作UI更行超过5秒!

 

 

Service  参考http://hi.baidu.com/xtlp/blog/item/e6e18810ad6c030c213f2eaf.html 

本地服务和远程服务

 

 

Android 监听事件 一旦监听一直会有守护线程监听。

 

 

 

分享到:
评论

相关推荐

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    Android代码-sofa-rpc

    支持同步、单向、回调、泛化等多种调用方式 支持集群容错、服务预热、自动故障隔离 强大的扩展功能,可以按需扩展各个功能组件 关联项目 sofa-rpc-boot-project SOFABoot 扩展项目,包括 starter 工程及使用示例。...

    精通ANDROID 3(中文版)1/2

    13.2.6 响应handleMessage回调  13.3 使用工作线程  13.3.1 从菜单调用工作线程  13.3.2 在工作线程与主线程之间通信  13.3.3 线程行为概述  13.4 处理程序示例驱动程序类  13.4.1 驱动程序活动文件  ...

    跨进程通讯

    android跨进程通讯,数据互相访问,传输各种数据类型及远程接口回调的使用

    Android信使Messenger范例源代码

    一个信使的范例源代码,有远程服务,有回调示例。

    android调用WebService实例分析

    WebService是一种基于SOAP协议的远程调用标准,通过webservice可以将不同操作系统平台、不同语言、不同技术整合到一块。在Android SDK中并没有提供调用WebService的库,因此,需要使用第三方的SDK来调用WebService。...

    patchfield, Android音频基础设施.zip

    patchfield, Android音频基础设施 PatchfieldPatchfield为Android提供了一个简单的回调驱动 API,用于实现音频模块( 如合成器和效果),用于连接音频模块。 这是由 JACK JACK的JACK音频连接套件。Patchfield由一个...

    精通Android 3 (中文版)2/2

    13.2.6 响应handleMessage回调  13.3 使用工作线程  13.3.1 从菜单调用工作线程  13.3.2 在工作线程与主线程之间通信  13.3.3 线程行为概述  13.4 处理程序示例驱动程序类  13.4.1 驱动程序活动文件  ...

    exposure-notifications-internals:该存储库包含一些代码段,这些代码段显示Exposure Notifications API在Google Play服务层内部的工作方式

    由于Android没有回调来通知应用程序蓝牙MAC地址正在更改(或已更改),因此可以通过在生成新的RPI时显式停止和重新启动广告来进行处理。 由于没有任何回调,因此在生成新的RPI之前,蓝牙MAC地址可能会旋转。 在这种...

    android网络图片异步多种加载方式

    图片工具类,多种方式加载图片,只要调用相关方法,可返回drawable,bitmap,属于异步加载,大项目中经过完善,过滤验证后的代码

    详解Android Service 使用时的注意事项

    每一次调用 startService 都会回调onStartCommand,之后调用了stopService之后就会 destroy Service。即使有多个client启动服务,那调用一次stopService 就能 destroy Service 。通过这种方式还有一个好处就是...

    Android-Prince-of-Versions:Android库,用于处理应用程序更新

    版本王子版本女王 库使用应用程序内更新检查更新可用性。通过jcenter获取implementation ' co.infinum:queen-of-versions:0.3.1 '特征使用... 进行异步更新检查,并使用回调通知结果。 支持同步更新检查。 加载和验证

    基于Go的分布式游戏服务器框架mqant.zip

    特性分模块机制基于 golang 协程,开发过程全程做到无 callback 回调,代码可读性更高RPC 支持本地和远程自动切换远程 RPC 默认使用 rabbitmq,未来可以添加更多种类的通信协议网关采用 MQTT 协议,无需再开发客户端...

    react-native-message-bar:屏幕顶部显示通知栏警报,以进行本机响应

    如果上下文需要,则自动隐藏当前警报以显示较新的警报支持水龙头隐藏(可以禁用) 4种预配置的可自定义样式+ 1种额外样式可自定义的文本,样式,持续时间,位置和动画警报显示,隐藏和点击时的回调支持方向子组件...

    rosettaflash:一种用于处理SWF文件的工具,利用zlib来制作仅字母数字的有效SWF文件,以便由于JSONP滥用而允许CSRF绕过SOP

    14.0.0.137之前的编译器没有适当地限制SWF文件格式,从而使远程攻击者可以通过精心制作的OBJECT元素来对JSONP端点进行跨站点请求伪造(CSRF)攻击,并获取敏感信息,而SWF内容应满足以下条件:设置回调API的要求。...

Global site tag (gtag.js) - Google Analytics