求教,使用handler刷新list的问题

asd8222687 2012-04-10 10:13:32
总共六个文件,实现一个list,点击后能够下载,并显示进度。
但是每次执行时在后台看到整个文件下载完了,进度条才会更新。。
首先是一个activity,承载list并获取数据。

public class MapDownActivity extends Activity {
private ListView list;
private static final String Path = "http://192.168.1.125:8080/MapServer/mapServer.do?para=getMapList";
private MapListAdapter adapter;
private ProgressBar pb;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

pb = (ProgressBar) findViewById(R.id.progressBar);
pb.setMax(100);
pb.setVisibility(View.INVISIBLE);

adapter = new MapListAdapter(this, getData(),pb,getApplicationContext());
list = (ListView) findViewById(R.id.listView1);
list.setAdapter(adapter);

}

private List<MapListItem> getData() {
//节省空间,这里是获取数据的
}
}

自定义一个adapter处理list与下载线程之间的通信

public class MapListAdapter extends BaseAdapter {
Activity a;
List<MapListItem> values;
MapListControlHandler handler;
private ProgressBar pb;
private Context context;

public MapListAdapter(Activity a, List<MapListItem> values,
ProgressBar pb,Context context) {
this.a = a;
this.values = values;
this.pb = pb;
this.context=context;
}

public void addItem(MapListItem item) {
values.add(item);
}

@Override
public int getCount() {
return values.size();
}

@Override
public MapListItem getItem(int arg0) {
return values.get(arg0);
}

public void setItem(MapListItem item, int arg0) {
values.set(arg0, item);
notifyDataSetChanged();
}

@Override
public long getItemId(int arg0) {
return arg0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = a.getLayoutInflater().inflate(R.layout.maplist, null);

TextView tv1 = (TextView) view.findViewById(R.id.mapname);
tv1.setText(values.get(position).getName());

TextView tv2 = (TextView) view.findViewById(R.id.downtext);
tv2.setText(values.get(position).getStatus());
//这样会生成很多handler吧,不知道是不是这儿出的问题

handler=new MapListControlHandler(pb, context);
handler.setItem(values.get(position));
handler.setAdapter(this);
handler.setPosition(position);

tv2.setOnClickListener(new MapDownOnClick(handler));

TextView tv3 = (TextView) view.findViewById(R.id.data);
tv3.setText(values.get(position).getDate());

TextView tv4 = (TextView) view.findViewById(R.id.updata);
tv4.setText(values.get(position).getPro());
return view;
}
}

handler的处理部分

public void handleMessage(Message msg) {
if (!Thread.currentThread().isInterrupted()) {
switch (msg.what) {
case 0:
Toast.makeText(context, "已加入下载队列", 1).show();
pb.setVisibility(View.VISIBLE);
break;
case 1:
pb.setProgress(msg.arg1);
break;
case 2:
pb.setProgress(100);
pb.setVisibility(View.INVISIBLE);
pb.setProgress(0);
item.setStatus("下载完成");
adapter.setItem(item, position);
break;
default:
break;
}
}
}

下载文件部分

private void writeToDevice(String content, String name, Handler handler) {
Message message = new Message();
message.what = 0;
handler.sendMessage(message);

OutputStream outputStream;
int DownedFileLength = 0;
String savePathString = mapdir + name + ".000";
Log.i("下载文件------------>", name);
try {
File file = new File(savePathString);
if (!file.exists()) {
file.createNewFile();
}

outputStream = new FileOutputStream(file);

byte[] buffer = content.getBytes("ISO-8859-1");
int FileLength = buffer.length;
int count = 1024 * 4;
while (DownedFileLength < FileLength) {
if (DownedFileLength + count > FileLength)
count = FileLength - DownedFileLength;
outputStream.write(buffer, DownedFileLength, count);

message = new Message();
message.what = 1;
message.arg1 = (int) ((int) DownedFileLength * 100 / FileLength);
handler.sendMessage(message);

DownedFileLength += count;
}
outputStream.close();
message = new Message();
message.what = 2;
handler.sendMessage(message);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

点击事件中的线程:

Thread thread = new Thread() {
public void run() {
new MapControl().downFile(handler);
}
};
thread.start();
...全文
257 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
asd8222687 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
while (DownedFileLength < FileLength) {
if (DownedFileLength + count > F……
sleep(1000)

每次循环暂停一下 每次写count=1024,多打些日志试试
[/Quote]
我觉得前面接收数据部分应该是我的服务器端的问题,我服务器端是直接把文件读成字符流,然后用response直接write出去的,所以我的接收端只能全部接受完之后再处理。。因此集中处理大量字符串导致进程过于繁忙,因而使消息产生延迟。。我加了sleep之后日志输出顺序正确了。。
asd8222687 2012-04-11
  • 打赏
  • 举报
回复
我在handler里面加入log:

case 1:
pb.setProgress(msg.arg1);
Log.i("Handler------------->", msg.arg1+"");
break;

在while里面加入log:

handler.sendMessage(message);
Log.i("------------->", message.arg1+"");
DownedFileLength += count;

结果如下:
04-11 09:10:38.508: D/dalvikvm(1550): GC_FOR_MALLOC freed 5007 objects / 307280 bytes in 537ms
04-11 09:10:42.398: D/dalvikvm(1550): GC_FOR_MALLOC freed 1858 objects / 125472 bytes in 97ms
04-11 09:10:42.529: D/dalvikvm(1550): GC_FOR_MALLOC freed 75 objects / 36064 bytes in 112ms
04-11 09:10:42.698: D/dalvikvm(1550): GC_FOR_MALLOC freed 44 objects / 67592 bytes in 135ms
04-11 09:10:42.718: I/dalvikvm-heap(1550): Grow heap (frag case) to 3.329MB for 262160-byte allocation
04-11 09:10:42.938: D/dalvikvm(1550): GC_FOR_MALLOC freed 0 objects / 0 bytes in 223ms
04-11 09:10:43.098: D/dalvikvm(1550): GC_FOR_MALLOC freed 84 objects / 134920 bytes in 105ms
04-11 09:10:43.121: I/dalvikvm-heap(1550): Grow heap (frag case) to 3.704MB for 524304-byte allocation
04-11 09:10:43.308: D/dalvikvm(1550): GC_FOR_MALLOC freed 0 objects / 0 bytes in 187ms
04-11 09:10:43.478: D/dalvikvm(1550): GC_FOR_MALLOC freed 164 objects / 269576 bytes in 103ms
04-11 09:10:43.508: I/dalvikvm-heap(1550): Grow heap (frag case) to 4.454MB for 1048592-byte allocation
04-11 09:10:43.698: D/dalvikvm(1550): GC_FOR_MALLOC freed 0 objects / 0 bytes in 185ms
04-11 09:10:44.599: D/dalvikvm(1550): GC_FOR_MALLOC freed 340 objects / 539872 bytes in 429ms
04-11 09:10:44.712: I/dalvikvm-heap(1550): Grow heap (frag case) to 5.954MB for 2097168-byte allocation
04-11 09:10:44.848: D/dalvikvm(1550): GC_FOR_MALLOC freed 0 objects / 0 bytes in 141ms
04-11 09:10:47.978: D/dalvikvm(1550): GC_FOR_MALLOC freed 694 objects / 1080544 bytes in 262ms
04-11 09:10:48.198: I/dalvikvm-heap(1550): Grow heap (frag case) to 8.954MB for 4194320-byte allocation
04-11 09:10:48.488: D/dalvikvm(1550): GC_FOR_MALLOC freed 0 objects / 0 bytes in 273ms
04-11 09:10:50.289: D/dalvikvm(1550): GC_FOR_MALLOC freed 325 objects / 2112008 bytes in 171ms
04-11 09:10:50.298: I/dalvikvm-heap(1550): Grow heap (frag case) to 9.426MB for 2592306-byte allocation
04-11 09:10:50.450: D/dalvikvm(1550): GC_FOR_MALLOC freed 0 objects / 0 bytes in 146ms
04-11 09:10:50.458: I/下载文件------------>(1550): map0
04-11 09:10:50.749: D/dalvikvm(1550): GC_FOR_MALLOC freed 46 objects / 4196344 bytes in 176ms
04-11 09:10:50.797: I/------------->(1550): 0
04-11 09:10:50.797: I/------------->(1550): 0
04-11 09:10:50.808: I/------------->(1550): 0
04-11 09:10:50.818: I/------------->(1550): 0
04-11 09:10:50.848: I/------------->(1550): 1
04-11 09:10:50.848: I/------------->(1550): 1
04-11 09:10:50.887: I/Handler------------->(1550): 0
04-11 09:10:50.887: I/Handler------------->(1550): 0
04-11 09:10:50.887: I/Handler------------->(1550): 0
04-11 09:10:50.887: I/Handler------------->(1550): 0
04-11 09:10:50.898: I/Handler------------->(1550): 1
04-11 09:10:50.898: I/------------->(1550): 1
04-11 09:10:50.898: I/------------->(1550): 2
04-11 09:10:50.898: I/------------->(1550): 2
04-11 09:10:50.919: I/Handler------------->(1550): 1
04-11 09:10:50.919: I/Handler------------->(1550): 1
04-11 09:10:50.927: I/------------->(1550): 2
04-11 09:10:50.927: I/------------->(1550): 3
04-11 09:10:50.940: I/------------->(1550): 3
04-11 09:10:50.940: I/------------->(1550): 3
04-11 09:10:50.967: I/------------->(1550): 4
04-11 09:10:50.967: I/------------->(1550): 4
04-11 09:10:50.967: I/------------->(1550): 4
04-11 09:10:50.967: I/------------->(1550): 5
04-11 09:10:50.979: I/------------->(1550): 5
04-11 09:10:50.988: I/------------->(1550): 5
04-11 09:10:50.988: I/------------->(1550): 6
04-11 09:10:51.007: I/------------->(1550): 6
04-11 09:10:51.007: I/------------->(1550): 6
04-11 09:10:51.020: I/------------->(1550): 6
04-11 09:10:51.020: I/------------->(1550): 7
04-11 09:10:51.020: I/------------->(1550): 7
04-11 09:10:51.047: I/------------->(1550): 7
04-11 09:10:51.047: I/------------->(1550): 8
04-11 09:10:51.078: I/------------->(1550): 8
04-11 09:10:51.078: I/------------->(1550): 8
04-11 09:10:51.078: I/------------->(1550): 9
04-11 09:10:51.087: I/------------->(1550): 9
04-11 09:10:51.087: I/------------->(1550): 9
04-11 09:10:51.087: I/------------->(1550): 10
04-11 09:10:51.098: I/------------->(1550): 10
04-11 09:10:51.098: I/------------->(1550): 10
04-11 09:10:51.118: I/------------->(1550): 11
04-11 09:10:51.128: I/------------->(1550): 11
04-11 09:10:51.128: I/------------->(1550): 11
04-11 09:10:51.128: I/------------->(1550): 12
04-11 09:10:51.138: I/------------->(1550): 12
04-11 09:10:51.138: I/------------->(1550): 12
04-11 09:10:51.148: I/------------->(1550): 12
04-11 09:10:51.158: I/------------->(1550): 13
04-11 09:10:51.158: I/------------->(1550): 13
04-11 09:10:51.158: I/------------->(1550): 13
04-11 09:10:51.177: I/------------->(1550): 14
04-11 09:10:51.177: I/------------->(1550): 14
04-11 09:10:51.189: I/------------->(1550): 14
04-11 09:10:51.199: I/------------->(1550): 15
04-11 09:10:51.199: I/------------->(1550): 15
04-11 09:10:51.228: I/------------->(1550): 15
04-11 09:10:51.228: I/------------->(1550): 16
04-11 09:10:51.279: I/------------->(1550): 16
04-11 09:10:51.279: I/------------->(1550): 16
04-11 09:10:51.297: I/------------->(1550): 17
04-11 09:10:51.368: I/------------->(1550): 17
04-11 09:10:51.398: I/------------->(1550): 17
04-11 09:10:51.408: I/------------->(1550): 18
04-11 09:10:51.448: I/------------->(1550): 18
04-11 09:10:51.448: I/------------->(1550): 18
04-11 09:10:51.500: I/------------->(1550): 18
04-11 09:10:51.518: I/------------->(1550): 19
04-11 09:10:51.547: I/------------->(1550): 19
04-11 09:10:51.547: I/------------->(1550): 19
04-11 09:10:51.598: I/------------->(1550): 20
04-11 09:10:51.618: I/------------->(1550): 20
04-11 09:10:51.648: I/Handler------------->(1550): 2
04-11 09:10:51.648: I/Handler------------->(1550): 2
04-11 09:10:51.678: I/Handler------------->(1550): 2
04-11 09:10:51.690: I/Handler------------->(1550): 3
04-11 09:10:51.690: I/------------->(1550): 20
04-11 09:10:51.698: I/------------->(1550): 21
04-11 09:10:51.729: I/Handler------------->(1550): 3
04-11 09:10:51.729: I/Handler------------->(1550): 3
04-11 09:10:51.729: I/Handler------------->(1550): 4

前一部分是系统接收数据的log,可以看到,接受完数据之后才执行了我自己的log,而且理想的log应该是两个互相穿插。。。
asd8222687 2012-04-11
  • 打赏
  • 举报
回复
我在handler里面加入log:

case 1:
pb.setProgress(msg.arg1);
Log.i("Handler------------->", msg.arg1+"");
break;

在while里面加入log:

handler.sendMessage(message);
Log.i("------------->", message.arg1+"");
DownedFileLength += count;

结果如下:
04-11 09:10:38.508: D/dalvikvm(1550): GC_FOR_MALLOC freed 5007 objects / 307280 bytes in 537ms
04-11 09:10:42.398: D/dalvikvm(1550): GC_FOR_MALLOC freed 1858 objects / 125472 bytes in 97ms
04-11 09:10:42.529: D/dalvikvm(1550): GC_FOR_MALLOC freed 75 objects / 36064 bytes in 112ms
04-11 09:10:42.698: D/dalvikvm(1550): GC_FOR_MALLOC freed 44 objects / 67592 bytes in 135ms
04-11 09:10:42.718: I/dalvikvm-heap(1550): Grow heap (frag case) to 3.329MB for 262160-byte allocation
04-11 09:10:42.938: D/dalvikvm(1550): GC_FOR_MALLOC freed 0 objects / 0 bytes in 223ms
04-11 09:10:43.098: D/dalvikvm(1550): GC_FOR_MALLOC freed 84 objects / 134920 bytes in 105ms
04-11 09:10:43.121: I/dalvikvm-heap(1550): Grow heap (frag case) to 3.704MB for 524304-byte allocation
04-11 09:10:43.308: D/dalvikvm(1550): GC_FOR_MALLOC freed 0 objects / 0 bytes in 187ms
04-11 09:10:43.478: D/dalvikvm(1550): GC_FOR_MALLOC freed 164 objects / 269576 bytes in 103ms
04-11 09:10:43.508: I/dalvikvm-heap(1550): Grow heap (frag case) to 4.454MB for 1048592-byte allocation
04-11 09:10:43.698: D/dalvikvm(1550): GC_FOR_MALLOC freed 0 objects / 0 bytes in 185ms
04-11 09:10:44.599: D/dalvikvm(1550): GC_FOR_MALLOC freed 340 objects / 539872 bytes in 429ms
04-11 09:10:44.712: I/dalvikvm-heap(1550): Grow heap (frag case) to 5.954MB for 2097168-byte allocation
04-11 09:10:44.848: D/dalvikvm(1550): GC_FOR_MALLOC freed 0 objects / 0 bytes in 141ms
04-11 09:10:47.978: D/dalvikvm(1550): GC_FOR_MALLOC freed 694 objects / 1080544 bytes in 262ms
04-11 09:10:48.198: I/dalvikvm-heap(1550): Grow heap (frag case) to 8.954MB for 4194320-byte allocation
04-11 09:10:48.488: D/dalvikvm(1550): GC_FOR_MALLOC freed 0 objects / 0 bytes in 273ms
04-11 09:10:50.289: D/dalvikvm(1550): GC_FOR_MALLOC freed 325 objects / 2112008 bytes in 171ms
04-11 09:10:50.298: I/dalvikvm-heap(1550): Grow heap (frag case) to 9.426MB for 2592306-byte allocation
04-11 09:10:50.450: D/dalvikvm(1550): GC_FOR_MALLOC freed 0 objects / 0 bytes in 146ms
04-11 09:10:50.458: I/下载文件------------>(1550): map0
04-11 09:10:50.749: D/dalvikvm(1550): GC_FOR_MALLOC freed 46 objects / 4196344 bytes in 176ms
04-11 09:10:50.797: I/------------->(1550): 0
04-11 09:10:50.797: I/------------->(1550): 0
04-11 09:10:50.808: I/------------->(1550): 0
04-11 09:10:50.818: I/------------->(1550): 0
04-11 09:10:50.848: I/------------->(1550): 1
04-11 09:10:50.848: I/------------->(1550): 1
04-11 09:10:50.887: I/Handler------------->(1550): 0
04-11 09:10:50.887: I/Handler------------->(1550): 0
04-11 09:10:50.887: I/Handler------------->(1550): 0
04-11 09:10:50.887: I/Handler------------->(1550): 0
04-11 09:10:50.898: I/Handler------------->(1550): 1
04-11 09:10:50.898: I/------------->(1550): 1
04-11 09:10:50.898: I/------------->(1550): 2
04-11 09:10:50.898: I/------------->(1550): 2
04-11 09:10:50.919: I/Handler------------->(1550): 1
04-11 09:10:50.919: I/Handler------------->(1550): 1
04-11 09:10:50.927: I/------------->(1550): 2
04-11 09:10:50.927: I/------------->(1550): 3
04-11 09:10:50.940: I/------------->(1550): 3
04-11 09:10:50.940: I/------------->(1550): 3
04-11 09:10:50.967: I/------------->(1550): 4
04-11 09:10:50.967: I/------------->(1550): 4
04-11 09:10:50.967: I/------------->(1550): 4
04-11 09:10:50.967: I/------------->(1550): 5
04-11 09:10:50.979: I/------------->(1550): 5
04-11 09:10:50.988: I/------------->(1550): 5
04-11 09:10:50.988: I/------------->(1550): 6
04-11 09:10:51.007: I/------------->(1550): 6
04-11 09:10:51.007: I/------------->(1550): 6
04-11 09:10:51.020: I/------------->(1550): 6
04-11 09:10:51.020: I/------------->(1550): 7
04-11 09:10:51.020: I/------------->(1550): 7
04-11 09:10:51.047: I/------------->(1550): 7
04-11 09:10:51.047: I/------------->(1550): 8
04-11 09:10:51.078: I/------------->(1550): 8
04-11 09:10:51.078: I/------------->(1550): 8
04-11 09:10:51.078: I/------------->(1550): 9
04-11 09:10:51.087: I/------------->(1550): 9
04-11 09:10:51.087: I/------------->(1550): 9
04-11 09:10:51.087: I/------------->(1550): 10
04-11 09:10:51.098: I/------------->(1550): 10
04-11 09:10:51.098: I/------------->(1550): 10
04-11 09:10:51.118: I/------------->(1550): 11
04-11 09:10:51.128: I/------------->(1550): 11
04-11 09:10:51.128: I/------------->(1550): 11
04-11 09:10:51.128: I/------------->(1550): 12
04-11 09:10:51.138: I/------------->(1550): 12
04-11 09:10:51.138: I/------------->(1550): 12
04-11 09:10:51.148: I/------------->(1550): 12
04-11 09:10:51.158: I/------------->(1550): 13
04-11 09:10:51.158: I/------------->(1550): 13
04-11 09:10:51.158: I/------------->(1550): 13
04-11 09:10:51.177: I/------------->(1550): 14
04-11 09:10:51.177: I/------------->(1550): 14
04-11 09:10:51.189: I/------------->(1550): 14
04-11 09:10:51.199: I/------------->(1550): 15
04-11 09:10:51.199: I/------------->(1550): 15
04-11 09:10:51.228: I/------------->(1550): 15
04-11 09:10:51.228: I/------------->(1550): 16
04-11 09:10:51.279: I/------------->(1550): 16
04-11 09:10:51.279: I/------------->(1550): 16
04-11 09:10:51.297: I/------------->(1550): 17
04-11 09:10:51.368: I/------------->(1550): 17
04-11 09:10:51.398: I/------------->(1550): 17
04-11 09:10:51.408: I/------------->(1550): 18
04-11 09:10:51.448: I/------------->(1550): 18
04-11 09:10:51.448: I/------------->(1550): 18
04-11 09:10:51.500: I/------------->(1550): 18
04-11 09:10:51.518: I/------------->(1550): 19
04-11 09:10:51.547: I/------------->(1550): 19
04-11 09:10:51.547: I/------------->(1550): 19
04-11 09:10:51.598: I/------------->(1550): 20
04-11 09:10:51.618: I/------------->(1550): 20
04-11 09:10:51.648: I/Handler------------->(1550): 2
04-11 09:10:51.648: I/Handler------------->(1550): 2
04-11 09:10:51.678: I/Handler------------->(1550): 2
04-11 09:10:51.690: I/Handler------------->(1550): 3
04-11 09:10:51.690: I/------------->(1550): 20
04-11 09:10:51.698: I/------------->(1550): 21
04-11 09:10:51.729: I/Handler------------->(1550): 3
04-11 09:10:51.729: I/Handler------------->(1550): 3
04-11 09:10:51.729: I/Handler------------->(1550): 4

前一部分是系统接收数据的log,可以看到,接受完数据之后才执行了我自己的log,而且理想的log应该是两个互相穿插。。。
life02 2012-04-10
  • 打赏
  • 举报
回复
线程里面sleep一下看看
asd8222687 2012-04-10
  • 打赏
  • 举报
回复
handler总是在下载完文件后才收到下载进度的message,但是下载开始的message却能准时收到。。
玄飞 2012-04-10
  • 打赏
  • 举报
回复
while (DownedFileLength < FileLength) {
if (DownedFileLength + count > F……
sleep(1000)

每次循环暂停一下 每次写count=1024,多打些日志试试
NoneSoVile 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 5 楼 的回复:

引用 4 楼 的回复:
加一些log语句,可以帮助你定位问题,这个代码里面,在下载的while循环里面添加log,输出一些关键的变量信息,比如DownedFileLength的值

Java code


while (DownedFileLength < FileLength) {
if (DownedFileLength + count > F……
[/Quote]

另外,从代码来看,你所谓的下载函数只是将string字符串保存到文件,这个过程极短,瞬间就完成。这个因素也是造成你看不到每一次循环更新的原因。如果你的while循环包含真正的下载过程,而且有一定时间才能完成,比如10s左右。估计效果应该能很明显了。
NoneSoVile 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:
加一些log语句,可以帮助你定位问题,这个代码里面,在下载的while循环里面添加log,输出一些关键的变量信息,比如DownedFileLength的值

Java code


while (DownedFileLength < FileLength) {
if (DownedFileLength + count > FileLen……

我之前在……
[/Quote]

因为下载是在单独线程,而且sendmessage不保证立即执行,只是送到消息队列,极有可能出现你说的现象。把下载线程的优先级降低一下。让ui线程有机会处理。

_了凡_ 2012-04-10
  • 打赏
  • 举报
回复
点击每个Item时都会创建一个对应的handler,每个handler都是挂在主线程上的。在下载线程中会有很多
进度消息传递过来,但是要注意:不是说你把消息一投递到handler的消息队列中它就会立刻执行的,前面有
说到,handler的消息队列是挂在主线程上的,所以它得等到主线程闲下来才有机会执行。

要想实现实时进度条之类的功能,用AsyncTask吧,也是开线程干活,很好用。
asd8222687 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
加一些log语句,可以帮助你定位问题,这个代码里面,在下载的while循环里面添加log,输出一些关键的变量信息,比如DownedFileLength的值

Java code


while (DownedFileLength < FileLength) {
if (DownedFileLength + count > FileLen……
[/Quote]
我之前在里面加过log,不过输出也是跟不上进度,都是整个过程完成之后,突然出现大量的log信息,不是一条一条的出现的。。。
NoneSoVile 2012-04-10
  • 打赏
  • 举报
回复
加一些log语句,可以帮助你定位问题,这个代码里面,在下载的while循环里面添加log,输出一些关键的变量信息,比如DownedFileLength的值


while (DownedFileLength < FileLength) {
if (DownedFileLength + count > FileLength)
count = FileLength - DownedFileLength;
outputStream.write(buffer, DownedFileLength, count);
Log.i("cur DownedFileLength = ", DownedFileLength);
message = new Message();
message.what = 1;
message.arg1 = (int) ((int) DownedFileLength * 100 / FileLength);
handler.sendMessage(message);
DownedFileLength += count;

}
leer168 2012-04-10
  • 打赏
  • 举报
回复
handle的用法不对头吧,找个简单的例子先搞清handle的通知机制吧

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧