gpt4 book ai didi

Android - 如果我在绑定(bind)后尝试使用其方法,应用程序会崩溃

转载 作者:行者123 更新时间:2023-12-02 08:23:09 25 4
gpt4 key购买 nike

我在尝试制作 Android 应用程序时遇到了问题。我创建了一个供我的主要 Activity 使用的服务。按照我在互联网上找到的指南,我对 onStart 函数进行了绑定(bind)。

@Override
public void onStart() {
super.onStart();
//TextView textView = (TextView) findViewById(R.id.myText);
textView.setText("Bound??????");
if (mBound == false) {
Intent intent = new Intent(this, com.mycompany.Messenger.LocalService.class);
mBound = bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
//mBound = bindService(intent, mConnection, 0);
//startService(intent);
if (mBound == true)
{
TextView textView = (TextView) findViewById(R.id.myText);
textView.setText("Bound");
}
if (mBound == false)
{
TextView textView = (TextView) findViewById(R.id.myText);
textView.setText("UnBound");
}
boolean connected = mService.CreateConnectionNetwork();


}
}

在我推荐绑定(bind)之后,仍在 onStart 函数内,我尝试调用绑定(bind)服务的一个方法,该方法检查是否存在与互联网的连接。然而,此时应用程序崩溃了。正如您所注意到的,我添加了对绑定(bind)是否成功的检查,结果是成功的,这使事情变得更加困惑。

我已向应用程序授予正确的权限,并且如果我通过事件(例如,按钮按下。但是,有些任务我希望在应用程序启动时自动完成,而不是在用户交互之后自动完成。有什么建议吗?

最佳答案

该问题的发生是由于对服务工作方式的误解。当您在 onStart 函数中进行绑定(bind)时,您只需将“Intent”(如信号)发送到系统即可执行服务绑定(bind)。但是,理论上您无法保证绑定(bind)何时完成。在实践中,您可以确保只有在 onStart 函数完成其工作后绑定(bind)才会完成,这就是该服务可以通过按钮使用的原因。

如果这是第一次绑定(bind)服务,并且您希望在确定服务已绑定(bind)时自动执行一些操作,那么最好的位置是在 onServiceConnected 函数内。当调用该函数时,您可以确定绑定(bind)已启动,因此在绑定(bind)完成的代码块之后(在下面代码中的 mService = binder.getService(); 之后) ) ,你可以添加你想要执行的代码。

    @Override
public void onServiceConnected(ComponentName mConnection, IBinder service) {

LocalService.LocalBinder binder = (LocalService.LocalBinder) service;
mService = binder.getService();
mService.CreateConnectionNetwork();
textView.setText("I just used the service and it did not crashhh!!!");

}

关于Android - 如果我在绑定(bind)后尝试使用其方法,应用程序会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28281245/

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