java - 另一个应用程序中的 Activity 和服务之间的通信

标签 java android performance android-layout

我在 Activity 和服务(位于另一个应用程序中)之间创建了通信。当我的服务收到来自 Activity 的调用时,它会生成一个新线程来执行任务。通常,完成此任务需要 3 秒。

当来自 Activity 的消息到达服务时,我们会保留它。并查看这条消息的replyTo是否为null。 replyTo 不为空。 (好的)

public class RemoteService extends Service{
    ...
    private static class IncomingHandler extends Handler implements Observer{       

        private Message msg;

        @Override
        public void handleMessage(Message msg){

            //- Hold the arrival message                        
            this.msg = msg;

            //- Check out value of replyTo
            Messenger replyTo = msg.replyTo;
            if (replyTo != null)
                Log.d("tag","replyTo ====///////==== null");
            else 
                Log.d("tag","replyTo ======== null");                                   

            //- Spawn a new thread to do the task   
            try{
                CustomThread thread = new CustomThread();
                thread.registerObserver(this);
                thread.start();
            }catch (Exception e) {
                log.d("tag",e.getMessage());
            }           
        }

        //- When the task is done
        @Override
        public void update(int result, String value) {

            //- Check out value of replyTo
            Messenger replyTo = msg.replyTo;
            if (replyTo != null)
                Log.d("tag","replyTo ====///////==== null");                           
            else 
                Log.d("tag","replyTo ======== null");

            //- prepare the data
            Bundle data = new Bundle();
            data.putString("key",value);
            Message message = Message.obtain(null,2,0,0);
            message.setData(data);

            //- Send message to the activity
            if (replyTo != null) replyTo.send(message);

        }
}

任务完成后,它会通知托管它的类。它将调用方法更新handleMessage 方法中,replyTo 不为空。然而,3 秒后,在 update 方法中,replyTo 为 null,并崩溃。

这是为什么呢?可能是因为 IncomingHandler 是静态类?还是其他原因?

最佳答案

您正在通过调用获取新消息:Message.obtain(null, ...- 这就是 replyTo 为 null 的原因

关于java - 另一个应用程序中的 Activity 和服务之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17127830/

相关文章:

android - 如何在 ListView 多选中将位置设置为复选框

performance - 算法效率

java - 如何在 Android 中使用时间格式

java - 使用 ActiveMQ 发送 JSON 文件

Android Gradle 设置

android - 按日期排序 - Realm (Android)

java - 不同屏幕尺寸上的 Sprite 速度

performance - OpenCL 内核上的 GPU 性能缓慢

java - ehcache putAll 操作线程安全且原子吗?

java - JFileChooser OK按下后如何不退出?