如何显示加载动画并避免任何用户交互,直到下一个活动被加载?

时间:2016-11-22 23:28:45

标签: java android android-layout android-fragments

在我的Android应用中,

ActivityA --->调用Service.java ----->调用ActivityB。

Service.java对JSON Web服务进行web url调用,一切正常。 现在我想在ActivityA中显示加载动画,直到代码返回值并将用户带到ActivityB。

问题 1)我经历了Stack over flow,所有人都回答使用BroadCastReceiver。

在Service.java中,我这样做

public Service {

   public String someMethod(){
       if(intent != null){
           Intent intent = new Intent("someAction");
           intent.putExtra("ABC", something);
           Context.sendBroadCast(intent);

           //Talk to JSON web services server
       }
   }
}

在ActivityA.java中

public class ActivityA {

   public view onCreate(){
       //call Service.java
   }

   public static class MyBroadCastReceiver extends BroadCastReceiver(){
       public onReceive(){
           //
       }
   }
}

1)之前Service.java返回ActivityB.java,但现在返回ActivityA.java 2)当我使用sendBroadCast()时,Service.java如何发送进度状态。我没有看到任何不断发送进展的事情。 3)我怎样才能在ActivityA中加载动画工作?请帮忙。

PS:我已经发布了我记忆中的代码。一旦我回到家,我会准确地发布。感谢。

1 个答案:

答案 0 :(得分:0)

如果我理解你的要求你可以只显示ProgressDialog或带标志的任何自定义对话框:

dialog.setCancelable(false);

一旦您在ActivityA的接收方收到服务的反馈,您想要关闭该对话框并发送新意图以打开ActivityB

public class ActivityA extends Activity{

    private ProgressDialog progressDialog = null;

    public view onCreate(){
        //call Service.java
        progressDialog = new ProgressDialog(this);
        progressDialog.setCancelable(false);
        progressDialog.setIndeterminate(true);
        progressDialog.show();

    }

    public static class MyBroadCastReceiver extends BroadCastReceiver(){
        public onReceive(){
            progressDialog.dismiss();
            // open ActivityB , append params
        }
    }
}

如果您需要显示大约进度li 25/50/75/100%,那么您需要从服务中传递一些整数,该整数将在ActivityA的接收器中用于设置ProgressDialog的进度。一旦达到100,您将再次需要关闭对话框。