【问题标题】:Show waiting notification till callback returns from thread显示等待通知,直到回调从线程返回
【发布时间】:2013-02-14 12:05:15
【问题描述】:

我是 android 新手,遇到这种情况

我正在从 Activity UI 调用一个线程。线程在做一些后台操作后会返回回调函数。

在此之前我需要在 Activity UI 中显示等待通知。[有效地冻结应用直到回调返回]

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

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

【问题讨论】:

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


    【解决方案1】:

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

    有关进度对话框的更多信息,请参阅此链接:http://developer.android.com/reference/android/app/ProgressDialog.html

    【讨论】:

      【解决方案2】:

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

        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();
                  }
                 }
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-09
        • 1970-01-01
        • 1970-01-01
        • 2016-09-03
        相关资源
        最近更新 更多