Asynctask 和 Handler class - 无法共享变量

Asynctask and Handler class - can't share variable

我有一个包含 Asynctask 和 Handler 的服务 类。 AsyncTask 和 Handler 应该共享一个变量。我使用静态volatile变量isSendMessage是因为我认为有两个线程,但我不确定。问题是 while 循环中的变量没有改变。我不知道我的错误在哪里。这是我的代码片段。

    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;              
            }
        }


    }

尝试移除 static volatile。 将其替换为 boolean isSendMessage = false;

onPostExecute() 自动使用 UI 线程,因此实际上不需要将处理程序与异步任务结合使用。只需像在其他任何地方一样编写要在那里执行的代码。

同样对于循环 while(!finish),我没有看到任何地方将 finish 设置为 true。