加载状态或异步任务

时间:2012-04-23 21:32:15

标签: android loading task

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

1 个答案:

答案 0 :(得分: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();
        }
    }
}