gpt4 book ai didi

android - 在服务与其 Activity 之间共享数据

转载 作者:行者123 更新时间:2023-11-30 02:53:31 24 4
gpt4 key购买 nike

服务和 Activity 之间交换数据的通常方式似乎是通过处理程序或消息。但是,如果我在一个 Activity 中并启动了一个我在同一个进程中实现的服务,为什么我不能访问它们的共享数据,因为它们在同一个地址空间中运行?它是否影响基本上有两个类( Activity 和服务)?如果没有,一个人如何访问另一个人的数据字段?

如果它们甚至在同一个线程 (UI) 中运行,同步就不再是问题,我只是想知道在这种情况下是否有更简单的方法在它们之间共享数据。谢谢。

最佳答案

是的,在这种情况下有一个更简单的方法。建立绑定(bind)后,您可以将 IBinder 转换为您的服务类型。

这是来自的相关代码 fragment http://developer.android.com/reference/android/app/Service.html

private LocalService mBoundService;

private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
// This is called when the connection with the service has been
// established, giving us the service object we can use to
// interact with the service. Because we have bound to a explicit
// service that we know is running in our own process, we can
// cast its IBinder to a concrete class and directly access it.
mBoundService = ((LocalService.LocalBinder)service).getService();

// Tell the user about this for our demo.
Toast.makeText(Binding.this, R.string.local_service_connected,
Toast.LENGTH_SHORT).show();
}

关于android - 在服务与其 Activity 之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23720481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com