Android:AsyncTask和get()的组合

时间:2014-02-20 13:18:52

标签: android android-asynctask get

在我的Android应用程序中,我必须首先通过在线服务器加载数据。但是在启动画面后,加载栏应该以黑色背景显示。但是当我这样做时,它会显示进度条背后的内容。我想要的只是显示进度条(黑色背景),直到下载数据。

这是我的mainactivity.java代码

public class MainActivity extends Activity {



@Override
protected void onCreate(Bundle savedInstanceState) {

    task myTask = new task();

    myTask.execute();

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //other code
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    //getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

class task extends AsyncTask<String, Integer, String> {

    private ProgressDialog progressDialog;
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        progressDialog=new ProgressDialog(MainActivity.this, android.R.style.Theme_Translucent_NoTitleBar);
        progressDialog.setMessage("Loading...");
        progressDialog.show();
    }

    @Override
    protected String doInBackground(String... params) {
        try {
            Thread.sleep(20000);
            } catch (Exception e) {
                e.printStackTrace();
            }
        return null;
    }
    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        if(progressDialog!=null)
            progressDialog.dismiss();
    }
}
}

好吧,虽然复制粘贴一些括号可能会出错。

但请放心,代码运行正常,问题是背景随加载屏幕一起加载。我了解了get()方法来停止正在加载的进程。但这也阻止了加载栏的观点。

请帮忙。或者任何其他方式的建议?

1 个答案:

答案 0 :(得分:1)

setContentView()移除onCreate(),并将其放在onPostExecute()的最后。