0

我想在使用 intentService 下载图像时显示进度条而不是进度对话框。我已经成功下载了图像,但现在我想在下载过程中显示进度条。有人请告诉我逻辑我该怎么做,给我一个例子。提前致谢。

我目前的代码是。主要活动

public class MainActivity extends Activity {
 private ResponseReceiver receiver;
 public ProgressBar mprogressbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    IntentFilter filter = new IntentFilter(ResponseReceiver.ACTION_RESP);
    filter.addCategory(Intent.CATEGORY_DEFAULT);
    receiver = new ResponseReceiver();
    registerReceiver(receiver, filter);

    Button download=(Button)findViewById(R.id.downloadImge);
   // mprogressbar=(ProgressBar) findViewById(R.id.progressBar1);

    download.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent msgIntent = new Intent(MainActivity.this,SimpleIntentService.class);
            startService(msgIntent);


        }
    });

}

@Override
public void onDestroy() {
    this.unregisterReceiver(receiver);
    super.onDestroy();
}


public class ResponseReceiver extends BroadcastReceiver {
    public static final String ACTION_RESP = "com.example.intent.action.MESSAGE_PROCESSED";
    @Override
    public void onReceive(Context context, Intent intent) {

        byte[] bitmapdata=intent.getByteArrayExtra("byteArray");

       Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata , 0, bitmapdata .length);
       ImageView displyImg=(ImageView) findViewById(R.id.displayImge);
    //   mprogressbar.setVisibility(View.GONE);
       displyImg.setImageBitmap(bitmap);

       //result.setText(text);
    }

}

}

这是我的 IntentService.class

public class SimpleIntentService extends IntentService {

Bitmap myBitmap;
byte[] byteArray;

public SimpleIntentService() {
    super("SimpleIntentService");
}

@Override
protected void onHandleIntent(Intent intent) {

    String imgurl="http://daertube.files.wordpress.com/2012/06/islamic-wallpaper-15.jpg";
    try {
    URL url = new URL(imgurl);
    HttpURLConnection connection = (HttpURLConnection) url
            .openConnection();
    connection.setDoInput(true);
    connection.connect();
    InputStream input = connection.getInputStream();
    //path=input.toString();
    myBitmap = BitmapFactory.decodeStream(input);
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    myBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
    byteArray = stream.toByteArray();


    } catch (IOException e) {
        e.printStackTrace();
        Log.e("error in geting url ", e.getMessage().toString());
    }

    Intent broadcastIntent = new Intent();
    broadcastIntent.setAction(ResponseReceiver.ACTION_RESP);
    broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
    broadcastIntent.putExtra("byteArray",byteArray );
    sendBroadcast(broadcastIntent);
}
}
4

1 回答 1

2

使用AsyncTask而不是服务。有一种方法onProgressUpdate可以用来设置进度ProgressBar

于 2013-09-17T10:50:00.333 回答