我有一个包含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