【问题标题】:Andriod Not Showing Process Dialague Box While Call Goes To Server呼叫转到服务器时Android不显示进程对话框
【发布时间】:2017-02-25 06:45:14
【问题描述】:

我刚开始在这里提问,所以任何关于此的建议都将不胜感激......但我的问题是:enter code here

我试图在等待来自服务器的数据时显示进程对话..我正在使用改造调用从服务器获取数据并在我们的项目中使用 MVP 模式.. 但是调用到服务器时显示黑屏..并在得到响应后直接加载内容 几天后我就被困在这一点上..

   public class ReceiptRegisterActivity extends AppCompatActivity   implements ReceiptRegisterPresenter.ReceiptRegisterPresenterListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
     setContentView(R.layout.activity_receipt_register);
        progressBar = new ProgressDialog(ReceiptRegisterActivity.this);

        progressBar.setCancelable(true);
        progressBar.setMessage("Fetching Data...");
        progressBar.setProgress(20);
        progressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        progressBar.show();
        progressBarStatus = 0;
spinner = (SearchableSpinner)findViewById(R.id.spinner);
        editsearch = (android.widget.SearchView) findViewById(R.id.search);
        editsearch.setOnQueryTextListener(this);
        expandButton =(Button)findViewById(R.id.expandButton);
        byDate =(Button)findViewById(R.id.byDate);
        byCustomer=(Button)findViewById(R.id.byCustomer);
        byDate.setFocusable(false);
        allEventLIstener();
dbHelperObj=new DBHelper(this);
        try{
            dbHelperObj.createDB();
        }catch (Exception e){
            throw new  Error(e);
        }
        try{
            dbHelperObj.openDataBase();

        }catch (SQLiteException e){
            e.printStackTrace();
        }
        //srActivity = this;
        // progressBar = new ProgressBar(this);
        //   progressBar.setVisibility(View.VISIBLE);

       receptRegisterPresenterObj =  new ReceiptRegisterPresenter(this,this);
        receptRegisterPresenterObj.getReceiptRegisterData();
}
 public void receiptRegisterDataReady(Object obj) {


       /// Getting Response In This Block Doing Some Manupilation And Dismiss progressBar...      
        progressBar.dismiss();

    }`

感谢您的帮助

【问题讨论】:

  • 虽然内置onCreate,但实际上并没有在那里显示屏幕。 onCreate 将操作排队等待稍后完成。你需要让onCreate尽快完成。将任何长时间运行的处理移至另一个生命周期回调,例如onResume,并且不要挂断onCreate。不确定这是否是您的问题,但希望对您有所帮助。

标签: android android-asynctask retrofit android-mvp


【解决方案1】:

您在 OnCreate 主线程中做的工作太多。这就是它冻结您的 Android 应用程序的原因。

在主线程中做你的 Progress UI:

 @Override
protected void onCreate(Bundle savedInstanceState) {
     setContentView(R.layout.activity_receipt_register);

   progressBar = new ProgressDialog(this, "title", "loading");

    heavywork();

}

   public void heavywork()
{

//start a new thread to process job
     new Thread(new Runnable() {  
         @Override  
         public void run() { 
             // Do all the Data From Server code here ! 
          }  
      }).start();

}

这可能会对您有所帮助: ProgressDialog in a separate thread

【讨论】:

    猜你喜欢
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多