gpt4 book ai didi

安卓下载大文件

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:45:23 26 4
gpt4 key购买 nike

我试图从网络服务器下载一个大的 .zip 文件,但我有一个奇怪的行为,描述是:

  • 我正在使用 512MB 的 SD 卡在 API 级别 3(版本 1.5)的设备模拟器中执行代码。我用“删除数据用户”启动设备
  • conexion.getContentLength() 的大小长度为 7012725
  • 服务器地址是 localhost (10.0.2.2),但我已经尝试使用外部服务器并且行为相同。我已经仔细检查过我可以通过网络浏览器下载文件。
  • 我在 list 文件中拥有这些权限:

-

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

错误:

  • 它开始下载文件,我可以看到文本 10、20、30、40、50,然后在 60 处停止。
  • 一段时间后,模拟器会自行重启。

解决方法:

  • This stackoverflow 中的问题在设备中有效,但我的情况并非如此。
  • 关于这个wifi锁issue我所做的是添加此权限“android.permission.WAKE_LOCK”,然后添加这段代码,但行为完全相同:

    WifiManager.WifiLock 无线锁;WifiManager 管理器 = (WifiManager) getSystemService(Context.WIFI_SERVICE);wifilock = manager.createWifiLock("wifilock");wifilock.acquire();...wifilock.release();

这是代码,它在一个单独的线程中执行:

private void downloadData(){
try{
Log.v(TAG, "downloading data");

URL url = new URL("http://10.0.2.2/1.zip");
URLConnection connection = url.openConnection();
connection.connect();

int lenghtOfFile = connection.getContentLength();

Log.v(TAG, "lenghtOfFile = "+lenghtOfFile);

InputStream is = url.openStream();

File testDirectory = new File(Environment.getExternalStorageDirectory()+"/testDirectory/");
if(!testDirectory.exists()){
testDirectory.mkdir();
}

FileOutputStream fos = new FileOutputStream(testDirectory+"/files.zip");

byte data[] = new byte[1024];

int count = 0;
long total = 0;
int progress = 0;

while ((count=is.read(data)) != -1)
{
total += count;
int progress_temp = (int)total*100/lenghtOfFile;
if(progress_temp%10 == 0 && progress != progress_temp){
progress = progress_temp;
Log.v(TAG, "total = "+progress);
}
fos.write(data, 0, count);
}

is.close();
fos.close();

Log.v(TAG, "downloading finished");

}catch(Exception e){
Log.v(TAG, "exception in downloadData");
e.printStackTrace();
}

}

有什么线索吗?非常感谢。

更新更多日志描述:

Hi Chris, I've tried to discover what was going on at first with this log in the Eclipse environment. Here are a little bit more detail about what is happening (time - action), note that I've changed the file to download for another one in orther to do more tests, but the results are quite the same:

00:00 It starts downloading:
V/iPhoto ( 853): downloading data
V/iPhoto ( 853): lenghtOfFile = 7732809
V/iPhoto ( 853): total = 10
V/iPhoto ( 853): total = 20
V/iPhoto ( 853): total = 30
V/iPhoto ( 853): total = 40
V/iPhoto ( 853): total = 50 (round 00:05)
-> Here it stops and the DDMS disconnects the device immediately

03:40 It finish the download (not always) and the device reboots on its own:
I/Process ( 595): Sending signal. PID: 595 SIG: 3
I/dalvikvm( 595): threadid=7: reacting to signal 3
D/dalvikvm( 722): GC freed 2193 objects / 135808 bytes in 176 sec
V/iPhoto ( 853): total = 60
I/dalvikvm( 595): Wrote stack trace to '/data/anr/traces.txt'
I/ActivityManager( 595): Process com.google.android.apps.maps:FriendService (pid 778) has died.
I/ActivityManager( 595): Process com.android.mms (pid 732) has died.
V/iPhoto ( 853): total = 70
V/iPhoto ( 853): total = 80
V/iPhoto ( 853): total = 90
V/iPhoto ( 853): total = 100
V/iPhoto ( 853): downloading finished
V/iPhoto ( 853): thread finish loading
I/Process ( 595): Sending signal. PID: 595 SIG: 9
I/ActivityThread( 757): Removing dead content provider: settings
I/ActivityThread( 748): Removing dead content provider: settings
I/ActivityThread( 722): Removing dead content provider: settings
I/ActivityThread( 700): Removing dead content provider: settings
I/ServiceManager( 549): service 'package' died
... services dying...
I/ServiceManager( 549): service 'wifi' died
E/installd( 557): eof
E/installd( 557): failed to read size
I/installd( 557): closing connection
D/qemud ( 560): fdhandler_event: disconnect on fd 11
D/qemud ( 560): fdhandler_event: disconnect on fd 12
E/vold ( 550): Framework disconnected
I/Zygote ( 554): Exit zygote because system server (595) has terminated
I/ServiceManager( 549): service 'simphonebook' died
I/ServiceManager( 549): service 'isms' died
I/ServiceManager( 549): service 'iphonesubinfo' died
I/ServiceManager( 549): service 'phone' died
D/AndroidRuntime( 949):
D/AndroidRuntime( 949): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
... and starting ...

谁能试试我的代码并下载一个 8MB 大小的 zip 文件?它对你有用吗?

最佳答案

我刚刚在真实设备上试用了这段代码,它运行良好。模拟器中一定有什么奇怪的东西。

关于安卓下载大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4031800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com