2012-05-28 148 views
1

我有一臺運行在Android設備上的服務器,作爲Service。我希望用戶輸入客戶號碼,然後服務啓動。有沒有更好的方式來處理這個問題,而不是將活動中的數據傳遞給服務?開始服務後活動掛起

此外,當我使用上述方法時,客戶端似乎掛起並強制應用程序銷燬。下面是代碼:

String a = clients.getText().toString(); 
Bundle bundle = new Bundle(); 
bundle.putCharSequence("NumberOfClients", a);   
Intent intent = new Intent(Manage.this, Server.class); 
intent.putExtras(bundle); 
Log.d("hi", a); 
startService(intent); 

這裏是服務器:

@Override 
public void onCreate() 
{       
    Thread server = new Thread(new ServerThread()); 
    server.start();     
} 

public int onStartCommand(Intent intent, int flags, int startId) { 
    super.onStartCommand(intent, flags, startId);  
    Bundle bundle = new Bundle(); 
    bundle = intent.getExtras(); 
    numberofclients = (String) bundle.getCharSequence("NumberOfClients"); 
    int a = Integer.parseInt(numberofclients);  

    return a; 
    } 

當我按下按鈕連接到客戶端掛起服務器。這是爲什麼發生?

+0

日誌,跟蹤或調試,看看會發生什麼 – Snicolas

回答

2

onStartCommand應該返回關於如何處理服務的預定義值。 看起來你想要一個START_NOT_STICKY 因此,在onStartCommand的返回語句中,這就是你要返回的東西。即

return START_NOT_STICKY; 

如果你想保存整數爲服務中使用的其他地方,創建一個全局變量,並設置它等於一個。

參考Android的Google文檔服務 http://developer.android.com/reference/android/app/Service.html#START_CONTINUATION_MASK