显示等待通知,直到回调从线程返回

时间:2013-02-14 12:05:15

标签: android multithreading callback android-asynctask android-activity

我是Android新手,我遇到了这种情况

我从Activity UI调用一个线程。执行一些后台操作后,线程将返回回调函数。

然后我需要在Activity UI中显示等待通知。[有效冻结应用程序直到回调返回]

我尝试使用状态标志和异步任务,但部分成功。

请告诉我这个问题的最佳解决方案。

2 个答案:

答案 0 :(得分:0)

在启动线程之前显示进度并在返回之前关闭进度对话框。

有关进度对话框的详情,请参阅以下链接:http://developer.android.com/reference/android/app/ProgressDialog.html

答案 1 :(得分:0)

您需要在启动线程之前显示进度对话框。

  private CustomizeDialog mCustomizeDialog = null;
  //in onCreate method
 mSubmitButton.setOnClickListener(new OnClickListener() {
 public void onClick(View v) {
   //checking few condition 
   mCustomizeDialog = new CustomizeDialog(makeRequestActivity.this);
   mCustomizeDialog.setTitle("Confirmation");
   mCustomizeDialog.setMessage("Make Request?");
    mCustomizeDialog.okButton.setOnClickListener(new OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                mCustomizeDialog.dismiss();
                                show();
     });
mCustomizeDialog.show();
   private void show() {
                                mCustomizeDialog = new CustomizeDialog(makeRequestActivity.this);
                                mCustomizeDialog.setTitle("Requesting");
                                mCustomizeDialog.setMessage("Connecting...");
                                mCustomizeDialog.okButton.setVisibility(View.GONE);
                                mCustomizeDialog.cancelButton.setVisibility(View.GONE);
                                mCustomizeDialog.show();
                    }

和我的广播接收器

  private BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
    public void onReceive(Context context, Intent intent) {
           if (intent.getAction().equals(request.CUSTOM_INTENT_MENU)) {
            mExtras = intent.getExtras();
            String result = mExtras.getString("tag");
            if (mCustomizeDialog.isShowing()) {
                mCustomizeDialog.dismiss();
            }
           }
};