0

我有一个加载 xml 文件的活动,但是当应用程序在 1 或 2 秒内被调用而没有回复时,我想知道是否可以进行某种加载以不显示应用程序崩溃,谢谢。

4

1 回答 1

1

经验法则是,如果您做任何事情,请使用AsyncTask,否则您的应用程序最终会因长时间的网络延迟或大文件而崩溃。

private class doSomethingTask extends AsyncTask<SomeData,Integer,SomeData[]> {

    private ProgressDialog dialog;

    protected SomeData[] doInBackground(SomeData... values) {
        int count = values.length;
        for( int i=0; i<count; i++) {
            publishProgress(count,i+1);

            // do something here
            ....
            //

            if( isCancelled() ) return null;
        }
        return values;
    }

    protected void onPreExecute()
    {
        // show progress bar or something
        dialog = new ProgressDialog(context);
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setMessage(context.getString(R.string.downloading));
        dialog.show();
    }

    protected void onProgressUpdate(Integer... values)  {
        super.onProgressUpdate(values);
        dialog.setMax(values[0]);
        dialog.setProgress(values[1]);
    }

    protected void onPostExecute(SomeData[] result) {
        // kill progress bar here
        if( this.dialog.isShowing()) {
            this.dialog.dismiss();
        }
    }
}
于 2012-04-24T00:48:11.200 回答