2012-06-22 40 views
0

我正在开发一个XMPP聊天客户端。我使用后台服务连接到网络XMPP服务器。但是,当我启动服务器时,它会在UI线程异常时为网络提供服务。 当我将Android SDK降级到8时,它给出了ANR异常Android背景网络服务

我试着从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线程上获得相同的网络。

有人可以帮忙吗?

感谢

回答

1

看来你正试图启动两个服务simultaneously.AFAIK你不能用上面这段code.But的我会告诉你为什么面对ANR启动它。

Intent serviceIntent=new Intent(); 
serviceIntent.setClass(getApplicationContext(), SeetiService.class); 
startService(serviceIntent); 

上面的代码应该在UI运行thread.and如果你想从另一个线程运行它,你必须将它使嵌入到你的runOnUiThread.So块应该像。

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();