実装時に問題がありますAsyncTask
。最近の情報を取得するには、携帯電話を回転させる必要があります。以下は私のクラスです:
GamerObject gamer;
….
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ip = "134.188.204.155";
// Set the name of the gamer
gamername = (TextView) findViewById(R.id.gamer_name);
// Set the gamerstatus:
gamerstatus = (TextView) findViewById(R.id.tvgamer_status_msg);
// set the job status
jobstatus = (TextView) findViewById(R.id.tvJob_status_msg);
new Operation().execute();
}
private class Operation extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
gamer= new GamerObject(ip);
gamer.UpdateAllData();
}
@Override
protected void onPostExecute(Void result) {
updateUI();
}
}
private void updateUI() {
gamer.updateAllData();
// Set the name of the gamer
TextView gamername = (TextView) findViewById(R.id.gamer_name );
gamername.setText(gamer.gamername);
gamername = gamer.gamername ;
// Set the gamer status:
…
// set the job status
…
}
AsyncTask
以前はインターフェイスを更新するためにインテントを使用していましたが、Android バージョン 4 と互換性があるように 使用してみたいと思います。電話を回転させずに情報を更新する方法を知っている人はいますか?
編集:
私が間違っていなければ、新しい値がある場合に UI が更新されなかったのはnew Operation().execute();
、onCreate で 1 回しか使用しないためです。onCreate が呼び出された場合、 AsyncTask が実行されます。つまり、電話を回転させるたびに onCreate に移動します。AsyncTask を実行し続ける方法を知っている人はいますか?