Android 进度条保持在0%
我曾尝试实现Async,以使用progresbar处理文件的后台解压,但是解压是在progressbar显示0%时进行的,解压后progresbar将在0%时解除。。onProgressUpdate方法未更新。我的代码如下:Android 进度条保持在0%,android,Android,我曾尝试实现Async,以使用progresbar处理文件的后台解压,但是解压是在progressbar显示0%时进行的,解压后progresbar将在0%时解除。。onProgressUpdate方法未更新。我的代码如下: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCo
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ib = (ImageButton) findViewById(R.id.ImageButton01);
ib.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
// TODO Auto-generated method stub
new DownloadFileFromURL().execute(file_url);
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
System.out.println("DIALOG:");
switch (id) {
case progress_bar_type: //
pDialog = new ProgressDialog(this);
pDialog.setMessage("Extracting. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setMax(100);
pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pDialog.setCancelable(true);
pDialog.show();
return pDialog;
default:
return null;
}
}
private void fileZ()
{
// TODO Auto-generated method stub
String zipFile = myDEST + myFolderImages + myFILEposterZIP;
String unzipLocation = myDEST + myFolderImages;
Decompress d = new Decompress(zipFile, unzipLocation);
d.unzip();
System.out.println("UNZIPPING");
}
class DownloadFileFromURL extends AsyncTask<String, String, String> {
@SuppressWarnings("deprecation")
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(progress_bar_type);
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
fileZ();
return null;
}
protected void onProgressUpdate(String... progress) {
// setting progress percentage
pDialog.setProgress(Integer.parseInt(progress[0]));
}
@SuppressWarnings("deprecation")
@Override
protected void onPostExecute(String file_url) {
// dismiss the dialog after the file was downloaded
dismissDialog(progress_bar_type);
}
}
}
@覆盖
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ib=(ImageButton)findViewById(R.id.ImageButton01);
ib.setOnClickListener(新的OnClickListener()
{
公共void onClick(视图v)
{
//TODO自动生成的方法存根
新建DownloadFileFromURL().execute(文件url);
}
});
}
@凌驾
受保护的对话框onCreateDialog(int id){
System.out.println(“对话框:”);
开关(id){
案例进度条类型://
pDialog=新建进度对话框(此对话框);
pDialog.setMessage(“正在提取。请稍候…”);
pDialog.setUndeterminate(假);
pDialog.setMax(100);
pDialog.setProgressStyle(ProgressDialog.STYLE_水平);
pDialog.setCancelable(真);
pDialog.show();
返回pDialog;
违约:
返回null;
}
}
私有void fileZ()
{
//TODO自动生成的方法存根
字符串zipFile=myDEST+myfolderimage+myFILEposterZIP;
字符串unzipLocation=myDEST+myfolderimage;
解压d=新解压(zipFile,解压);
d、 解压缩();
System.out.println(“解压缩”);
}
类DownloadFileFromURL扩展异步任务{
@抑制警告(“弃用”)
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
显示对话框(进度条类型);
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
//TODO自动生成的方法存根
fileZ();
返回null;
}
受保护的void onProgressUpdate(字符串…进度){
//设置进度百分比
pDialog.setProgress(Integer.parseInt(progress[0]));
}
@抑制警告(“弃用”)
@凌驾
受保护的void onPostExecute(字符串文件\u url){
//下载文件后关闭对话框
解雇对话框(进度条类型);
}
}
}
编辑#1:
类提取文件扩展异步任务{
@抑制警告(“弃用”)
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
显示对话框(进度条类型);
}
@凌驾
受保护的字符串doInBackground(字符串…f_url){
//TODO自动生成的方法存根
线程线程=新线程()
{
公开募捐
{
int prog=0;
而(进展<100)
{
pDialog.setProgress(prog);
试一试{
《睡眠》(2000年);
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
prog++;
}
}
};
thread.start();
System.out.println(“提取…”);
fileZ();
返回null;
}
解压文件时无法正确更新进度条
使用计数器,如:
count++;
并更新progressbar
publishProgress((int)((count));
你有没有为进度条更新编码?没有,我想它会根据doInBackground过程进行计算,我不确定如何更新onProgressUpdatePlease请参见编辑#1,提取后进度条以21%结束。它计算错误
publishProgress((int)((count));