2014-03-07 52 views
1

我創建了一個調用服務的活動,並且該服務創建了一個線程,用於向/從服務器發送和接收一些數據,我可以打開其他應用程序和服務線程運行正常,但是當我關閉活動時,服務繼續運行,但線程停止工作。爲什麼???我如何保持線程運行!!當我關閉活動時,在我的服務上創建的線程被殺死

代碼

活動

package com.connectus.app; 

public class ConnectUsActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_connect_us); 

     Intent startServiceIntent = new Intent(getApplicationContext(), ConnectUsService.class); 
     startService(startServiceIntent); 
} 

服務

package com.connectus.app; 

public class ConnectUsService extends Service { 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    // TODO Auto-generated method stub 

        Thread t=new Thread(new Runnable() { 

        private DataInputStream in; 
        private BufferedReader br; 
        private DataOutputStream out; 

        @Override 
        public void run() { 
         Socket server=null; 
         try{ 
          server=new Socket("10.10.40.58",4444); 
          in = new DataInputStream(server.getInputStream()); 
          br=new BufferedReader(new InputStreamReader(in)); 
          out = new DataOutputStream(server.getOutputStream()); 
          while(true){ 
           out.writeUTF("aaaaa"); 
           String leido=in.readUTF(); 

           out.writeUTF("asdf"); 
                    Thread.sleep(60000); 
          } 
         }catch(IOException ioe){ 
          ioe.printStackTrace(); 
         }catch (Exception e) { 
          e.printStackTrace(); 
         } 
        } 
       }); 
       t.start(); 


    return START_STICKY; 
} 

@Override 
public IBinder onBind(Intent arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

} 

這是我的代碼只是一部分,我希望它能幫助。

+2

你必須有一個錯誤。請發佈您的相關代碼。 – Merlevede

+0

但我在Logcat上看不到任何錯誤。讓我把代碼。 –

+0

告訴我們代碼請 – cheloncio

回答

0

謝謝大家,最後我找到了解決辦法。這是necesary使用setForeground()方法,我只是說此代碼,以我的服務類:

Notification note=new Notification(); 
startForeground(1337, note); 

根據我的研究,這個代碼是用來防止該服務獲得自身死亡。

最好的問候!

+0

服務永遠不會自殺,它可以在技術上停止做它正在做的事情,然後Android停止它。前臺服務不會阻止服務被殺,它只會大大降低發生這種情況的機率。在安全方面的代碼,假設最差。 –

相關問題