我有一個包含Asynctask和Handler類的服務。 AsyncTask和Handler應該共享一個變量。我使用靜態易失性變量isSendMessage
,因爲我認爲有兩個線程,但我不確定。問題在於while循環中的變量不會改變。我不知道我的錯誤在哪裏。這是我的代碼片段。Asynctask和Handler類 - 不能共享變量
public class Services extends Service {
static volatile boolean isSendMessage = false;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand (Intent intent, int flags, int startId) {
new ConnectionServerAsyncTask().execute();
return Service.START_STICKY;
}
public class ConnectionServerAsyncTask extends AsyncTask<Void, Result, Void> {
private boolean finish = false;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
while(!finish){
Log.i("isSendMessage",String.valueOf(isSendMessage));
}
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
}
public static class MessageHandler extends Handler{
@Override
public void handleMessage(Message msg) {
Log.i("MessageHandler","handleMessage");
isSendMessage = true;
}
}
}
Asynctask類用於連接到服務器。我需要處理程序,因爲我想從活動發送數據到服務,並且服務Asynctask將數據發送到服務器。 – 1Jo1 2015-04-01 14:20:23
您可以在活動的頂部聲明靜態布爾isSendMessage = false作爲全局變量。這應該允許它被共享。它的工作原理是 – scubasteve623 2015-04-01 14:26:21
。謝謝。我的錯誤是該服務有一個自己的過程... – 1Jo1 2015-04-01 14:58:54