gpt4 book ai didi

android - 服务绑定(bind)到 Activity

转载 作者:搜寻专家 更新时间:2023-11-01 07:41:09 26 4
gpt4 key购买 nike

这是我的代码:

public class MainActivity extends Activity {
private ComponentName mService;
private Servicio serviceBinder;

private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
serviceBinder = ((Servicio.MyBinder)service).getService();
}

public void onServiceDisconnected(ComponentName className) {
serviceBinder = null;
}
};

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Intent bindIntent = new Intent(this, Servicio.class);
bindService(bindIntent, mConnection, Context.BIND_AUTO_CREATE);
}

@Override
protected void onStart() {
serviceBinder.somethingThatTakesTooMuch();
super.onStart();
}



public class Servicio extends Service {
private final IBinder binder = new MyBinder();

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

public int somethingThatTakesTooMuch() {
return 1;
}

public class MyBinder extends Binder {
Servicio getService() {
return Servicio.this;
}
}

当我运行它时,它在这一行中得到一个 NullPointerException:

serviceBinder.somethingThatTakesTooMuch();

最佳答案

您的 onStart 在与服务的连接完成之前被调用。这不是即时的。

您只能保证在调用 onServiceConnected 之后连接服务。只有这样你才能调用 serviceBinder 上的方法。

尝试在serviceBinder = ((Servicio.MyBinder)service).getService();

之后的行中调用 serviceBinder.somethingThatTakesTooMuch()

关于android - 服务绑定(bind)到 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2814375/

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