Android:从服务生成的线程可以直接调用Service的一种方法吗?

时间:2015-08-13 04:35:24

标签: java android multithreading

我有一个产生一个Thread的服务,它做了一些 与云服务握手。当线程完成时, 它通过显式解除引用方法来通知服务 来自服务的一个实例。

问题:在Android模型中,这是否可以接受? 如果没有,关于衍生线程的最佳实践是什么 通知父服务?

注意:我使用的是Lollipop(Android 5.0,API Level 21)。

1 个答案:

答案 0 :(得分:0)

这是一个粗略的想法(借鉴了其中一个在线的例子) Android书籍):

public class MyService extends Service {
    private static final String TOKEN = "msg-token";

    // XXX Implement Service methods here.

    private void notifyService(Object someObject) {
        // XXX Process result from cloud service interaction.
    }

    private class MyCloudClient implements Runnable {
        @Override
        public void run() {
            // XXX Interact with cloud service here.

            Bundle msgInfo = new Bundle();
            msgInfo.putSerializable(TOKEN, msgInfo);

            Message msg = Message.obtain();
            msg.setData(msgInfo);
            MyService.this.msgHandler.sendMessage(msg);        
        }
    }

    private Handler msgHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            Bundle msgInfo = msg.getData();
            Object someObject = msgInfo.getSerializable(TOKEN);
            MyService.this.notifyService(someObject);
        }
    };
}