我正在开发一个XMPP聊天客户端。我正在使用后台服务连接到网络XMPP服务器。但是,当我启动服务器时,它给出了网络上的UI线程异常。 当我将Android SDK降级到8时,它会给出ANR异常
我尝试从SPlash屏幕的onCreate方法启动服务。
Runnable runnable = new Runnable() {
@Override
public void run() {
Intent serviceIntent=new Intent();
serviceIntent.setClass(getApplicationContext(), SeetiService.class);
startService(serviceIntent);
}
};
new Thread(runnable).start();
Thread serviceThread=new Thread()
{
public void run()
{
Intent serviceIntent=new Intent();
serviceIntent.setClass(getApplicationContext(), SeetiService.class);
startService(serviceIntent);
}
};
serviceThread.start();
但我仍然在主UI线程上获得相同的网络。
有人能帮忙吗?
由于
答案 0 :(得分:1)
您似乎正在尝试同时启动两个服务.AFAIK您无法使用上面的代码启动它。但我将说明您面对ANR的原因。
Intent serviceIntent=new Intent();
serviceIntent.setClass(getApplicationContext(), SeetiService.class);
startService(serviceIntent);
上面的代码应该在UI线程上运行。如果你想从另一个线程运行它,你必须将它嵌入到runOnUiThread中。所以你的块应该是这样的。
Runnable runnable = new Runnable()
{@Override
public void run()
{
runOnUiThread(new Runnable()
{
public void run()
{
Intent serviceIntent = new Intent();
serviceIntent.setClass(getApplicationContext(), SeetiService.class);
startService(serviceIntent);
}
});
}
};
new Thread(runnable).start();