2012-06-22 41 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();