以下のようなアクティビティクラスがあります。
public class LoginActivity extends Activity implements OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1 = (ImageView) findViewById(R.id.button1);
button1.setOnClickListener(this);
}
@Override
public void onClick(View v) {
BackgroundRunner bgRunner = new BackgroundRunner(this);
String[] params = new String[]{url};
bgRunner.execute(params);
}
}
AsyncTask は次のとおりです。
public class BackgroundRunner extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... params) {
ServiceCaller serviceCaller = new ServiceCaller();
boolean status = serviceCaller.checkLogin(params[0]);
return status;
}
@Override
public void onPreExecute(){
progressBar = (ProgressBar) currentContext.findViewById(R.id.loader);
progressBar.setVisibility(View.VISIBLE);
}
@Override
public void onPostExecute(final Boolean status){
progressBar.setVisibility(View.INVISIBLE);
}
}
これがシナリオです。メイン アクティビティ クラスは、クリック時にスレッドを作成します。次に、作成されたスレッドがサーバーからデータを取得します。これは時間のかかる作業です。そのため、進行状況バーが UI に表示されます。現在、AsyncTask を使用してサーバー データの取得を行っています。しかし、本当の課題は、バックグラウンド タスクが完了するのを待って、そこから値を取得することです。私が探しているのは:
サーバー呼び出しが行われるまで待って、結果を取得します。その間、進行状況バーを表示します。ハンドラーはオプションになると思います。私はそれについてはるかに明確ではありません。
何かご意見は?