0

Android アプリケーションで asynctask ランナーを使用しているときに、5 秒ごとに asynctaskrunner を while ループで実行して、テキスト ビューで gps 座標を表示すると、いくつかの衝撃を受けました。

パッケージcom.example.gpsproject;

import android.content.Context;
import android.location.Location;
import android.os.AsyncTask;
import android.widget.TextView;
public class AsyncTaskRunner extends AsyncTask<Void,Void,Void> {


    private final Context mContext;
    TextView latitude,longitude;


 public AsyncTaskRunner(Context c,TextView lat,TextView lon) {
    // TODO Auto-generated constructor stub
     mContext = c;
     latitude = lat;
     longitude = lon;

}
 Location a = new Location("zfcdha");
 String lonii,latii;


 private void sleep(int i) {
    // TODO Auto-generated method stub

}


 protected void onPostExecute() {


 }


 @Override
 protected void onPreExecute() {

 }



protected Void doInBackground(Void... params) {

  try {
      GPSTracker mytracker = new GPSTracker(mContext);

    while(true){
     latii = "" + a.getLatitude();
     lonii = "" + a.getLongitude();
     latitude.setText(latii);
     longitude.setText(lonii);
            sleep(5000);
    }





  } catch (Exception e) {
   e.printStackTrace();
;
  }
 ;
return null;


 }
}
4

2 に答える 2

1

onPostExecute(Result) は UI スレッドで実行されます onPreExecute() は UI スレッドで実行されます

doInBackground(Void... params) は独自のスレッドで実行されます

別のスレッドで UI を変更しないでください。メッセージを使用することをお勧めします。

于 2013-10-23T02:57:23.560 に答える