バックグラウンドスレッドを実行しています。バックグラウンド スレッドが正常に実行された後、UI でユーザーに警告メッセージを表示したいと考えています。
4 に答える
で作業しAsynTask
た場合は、で表示できますonPostExecute()
。
http://www.mysamplecode.com/2011/09/android-asynctask-httpclient-with.html
AlertDialog alertDialog = new AlertDialog.Builder(
AlertDialogActivity.this).create();
// Setting Dialog Title
alertDialog.setTitle("Alert Dialog");
// Setting Dialog Message
alertDialog.setMessage("Welcome to AndroidHive.info");
// Setting OK Button
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Write your code here to execute after dialog closed
Toast.makeText(getApplicationContext(), "You clicked on OK", Toast.LENGTH_SHORT).show();
}
});
// Showing Alert Message
alertDialog.show();
アラートの詳細については、http: //www.androidhive.info/2011/09/how-to-show-alert-dialog-in-android/ を参照してください。
AsyncTaskを使用している場合は、メッセージ (おそらくトースト) を表示するためのコードをonPostExecute()
.
バックグラウンド スレッドを UI に接続することは不可能ではありません。ハンドラーの助けを借りて、メッセージを送信できます。そのメッセージをチェックすることで、アラート メッセージを表示できます。このコードが役立つと思います。
Thread animator = new Thread() {
public void run() {
int i = 0;
try {
sleep(4000);
while (i < 4) {
sleep(50);
handler.sendMessage(handler.obtainMessage(i));
i++;
}
} catch (Exception e) {
}
}
};
animator.start();
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 0) {
animatedimage.setImageResource(R.drawable.sub1);
} else if (msg.what == 1) {
animatedimage.setImageResource(R.drawable.sub2);
} else if (msg.what == 2) {
animatedimage.setImageResource(R.drawable.sub3);
} else if (msg.what == 3) {
animatedimage.setImageResource(R.drawable.sub4);
}
}
};
Assync tasy を使用している場合は、
onPostExecute()
非同期スレッドを起動します。非同期スレッドは、OnPreExecute()、doInBackground()、および onPostExecute() の 3 つのメソッドを提供します。
最初と最後のメソッドは UI スレッドで呼び出されるため、doInBackground での操作は一度