后台线程执行成功后显示AlertDialog

时间:2012-04-17 04:26:03

标签: android android-alertdialog

我正在运行后台线程。在后台线程成功执行后,我想在UI上向用户显示一些警告消息。

4 个答案:

答案 0 :(得分:2)

如果您使用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/

答案 1 :(得分:0)

如果您使用AsyncTask,那么您可以在onPostExecute()中编写用于显示消息的代码(可能是Toast)。

答案 2 :(得分:0)

将后台线程连接到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,你可以在

中进行
onPostExecute()

答案 3 :(得分:0)

启动异步线程。异步线程为您提供了三种方法:OnPreExecute(),doInBackground()和onPostExecute()。

在UI线程上调用第一个和最后一个方法,所以一旦doInBackground中的操作