gpt4 book ai didi

android - 服务未初始化,返回 NullPointerException

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

我正在尝试在我的服务和 Activity 设置之间建立双向通信。为此,我像往常一样启动我的服务,在我的 Activity 中向 Messenger 发送一条设置为 replyTo 的消息,然后将其发送到我的服务。这样我就有了双向发送消息的引用。这是我的 Activty 中的一些相关代码:

private Messenger mService = null;
private final Messenger mMessenger = new Messenger(new IncomingHandler());

private ServiceConnection mConnection = new ServiceConnection()
{
public void onServiceConnected(ComponentName className, IBinder service)
{
mService = new Messenger(service);
mBound = true;
}

public void onServiceDisconnected(ComponentName className)
{
mService = null;
mBound = false;
}
};

private void initMessenger()
{
Message messageHandler = Message.obtain(null, NetworkService.MSG_GET_HANDLER, 0, 0);
messageHandler.replyTo = mMessenger; //Set the replyTo to give a reference
try
{
mService.send(messageHandler);
}
catch(RemoteException e)
{
e.printStackTrade();
}
catch(NullPointerException e)
{
e.printStackTrace(); //Why!!!
}
}

public void onCreate()
{
...
//Create the intent to start the network service
Intent iService = new Intent(this, NetworkService.class);
int[] connectionConfig = {CONNECTION_BT};
iService.putExtra(CONNECTION_CONFIG, connectionConfig);
bindService(iService, mConnection, Context.BIND_ABOVE_CLIENT);
startService(iService);
initMessenger();
}

当我尝试调用 mService.send() 时抛出 NullPointerException,很可能是因为当时 mService 为空。如果我将 initMessenger() 代码移到 Button 的 OnClickListener 中,它工作正常,这就是困惑的来源。我是否应该在启动服务后等待一定时间才能使用它?

最佳答案

为什么不在 onServiceConnected() 方法中调用 initMessenger()?这样 mService 肯定会被分配。

关于android - 服务未初始化,返回 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10982789/

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