gpt4 book ai didi

android aidl导入

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:39 30 4
gpt4 key购买 nike

我正在尝试将 android.content.Context 导入 AIDL 文件,但 eclipse 无法识别它..

这是我的代码:

package nsip.net;

import android.content.Context; // error couldn't find import for class ...

interface IMyContactsService{

void printToast(Context context, String text);

}

谁能帮帮我?

最佳答案

使用 android.content.Context 是行不通的,因为它没有实现 android.os.Parcelable

但是 - 如果您有一个类(例如 MyExampleParcelable)要在 AIDL 接口(interface)中传输(并且实际上实现了 Parcelable),您可以创建一个 .aidl 文件,MyExampleParcelable.aidl 您在其中写入:

package the.package.where.the.class.is;

parcelable MyExampleParcelable;


现在,除非你非常想跨进程对话,否则你应该考虑本地服务。

编辑(稍微更有帮助):

这是本地服务吗(即它只会在您自己的应用程序和进程中使用)?在这些情况下,通常最好实现一个 Binder 并直接返回它。

public class SomeService extends Service {
....
....
public class SomeServiceBinder extends Binder {
public SomeService getSomeService() {
return SomeService.this;
}
}

private final IBinder mBinder = new SomeServiceBinder();

@Override
public IBinder onBind(Intent intent) {
return mBinder;
}

public void printToast(Context context, String text) {
// Why are you even passing Context here? A Service can create Toasts by it self.
....
....
}
// And all other methods you want the caller to be able to invoke on
// your service.
}

基本上,当 Activity 绑定(bind)到您的服务时,它会简单地将生成的 IBinder 转换为 SomeService.SomeServiceBinder,调用 SomeService.SomeServiceBinder#getSomeService() - 和 bang,访问正在运行的 Service 实例 + 您可以调用其 API 中的内容.

关于android aidl导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10737931/

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