ProgressDialog显示时间-Android Studio

时间:2018-10-14 01:12:20

标签: android show progressdialog

我在android studio上的progressDialog遇到问题。创建活动后,必须加载一个折线图,并且需要一个进度对话框来等待直到该折线图加载完成。它工作正常,但我需要将数据流保存在文件中,这需要花费一些时间,因此我需要再次显示一个progressdialog,但它不会出现。

这是我需要再次显示的方法。

private void writeDataToString(String data, String file_name) throws FileNotFoundException {
    try {
       ProgressDialog progressDialog2 = new ProgressDialog(this);
        progressDialog2.setIcon(R.mipmap.ic_launcher);
        progressDialog2.setMessage("Loading...");
        progressDialog2.show();
        FileOutputStream fos = this.openFileOutput(file_name, MODE_PRIVATE);
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        osw.write(data);
        osw.flush();
        osw.close();
        progressDialog2.dismiss();

    }
    catch (IOException ex) {
        ex.printStackTrace();
    }
}

我做错了什么?这是onCreate方法。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_records);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    progressDialog = new ProgressDialog(this);
    progressDialog.setIcon(R.mipmap.ic_launcher);
    progressDialog.setMessage("Loading...");
    progressDialog.show();
    // there are a lot of things here but I dont show it
    //......
}

然后是取消第一个progressDialog(起作用的对话框)的方法。确实,它确实很在乎,但我顺便添加了它。

@Override
public void onSensorChanged(SensorEvent event) {

    double valor;
    if (recording && takeValue) {
        float[] values = event.values;
        valor = Math.sqrt(Math.pow(values[0], 2) + Math.pow(values[1], 2) + Math.pow(values[2], 2));
        datos.add((float) valor);
    }

    if (takeValue && !(open||savedOpened)) {
      if (flag==149)
          seg=0;

        if (flag < 150)
            flag++;
        else{
           // Here I cancel it
            progressDialog.cancel();

        }
       //.................
        }

1 个答案:

答案 0 :(得分:0)

我相信,如果OutputStreamWriter在另一个线程上运行其write方法是可能的(因为这不是UI要求),所以当它进行调用时,它将继续执行代码,导致进度条关闭,您应该看到如果在完成write方法后触发了某个侦听器或事件,并在其中调用进度对话框的关闭项