相关疑难解决方法(0)

Android下载大文件

我正在尝试从Web服务器下载一个大的.zip文件,但我有一个奇怪的行为,描述是:

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

-

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
Run Code Online (Sandbox Code Playgroud)

错误:

  • 它开始下载文件,我可以看到文本10,20,30,40,50,然后它停在60.
  • 过了一会儿,模拟器重新启动.

解决方法:

  • stackoverflow中的这个问题在设备中工作,而不是在我的情况下.
  • 关于这个wifi锁定问题,我所做的是添加此权限"android.permission.WAKE_LOCK"然后这段代码,但具有完全相同的行为:

    WifiManager.WifiLock wifilock; WifiManager manager =(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 …
Run Code Online (Sandbox Code Playgroud)

android download

13
推荐指数
1
解决办法
1万
查看次数

如何限制Java中的带宽?

我写了一个Java调度程序,每小时使用:

new SAXBuilder().build(new URL(xxx));
Run Code Online (Sandbox Code Playgroud)

要么

HttpConnection.connect(new URL(xxx)); // jsoup library code
Run Code Online (Sandbox Code Playgroud)

获取一个大的XML/HTML文件.

我的服务器最大带宽限制是2Mbits.

当这个Java调度代码运行时,我使用超过2Mbits的带宽.(看看)

因此,每次用户访问我的服务器时,它都太慢了.

如何限制Java计划使用较低的带宽?(例如500Kbits)

我正在使用Ubuntu服务器.

java

9
推荐指数
2
解决办法
2万
查看次数

我可以为InputStream的read()函数设置超时吗?

我有一个DataInputStream我从一个Socket.有什么办法可以设置超时dis.read(...)吗?目前我产生了一个新线程来进行读取.虽然父线程thread.join(timeout)在中断之前会等待.我知道nio,但我认为我不想在这一点上重构那么多.谢谢.

java io

7
推荐指数
1
解决办法
2万
查看次数

Android - 大文件下载停止 - 使用async/progressdialog

我有一个简单的代码应该执行一项任务,当单击按钮下载文件,将其保存到SD卡,然后打开它.一切正常,除了在下载期间,对于较大的文件,连接丢失和进度条挂起 - 几乎总是在20%.我搜索并搜索过,无法弄清楚如何保持连接活动并允许下载完成.任何想法如何保持连接活动,以便下载完成而不是停滞在20%?

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class DownloadTestActivity extends Activity {

   public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
   private Button startBtn;
   private ProgressDialog mProgressDialog;

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.main); …
Run Code Online (Sandbox Code Playgroud)

java android asynchronous download progressdialog

7
推荐指数
1
解决办法
4125
查看次数

如何实现Java限制的下载速率?

我将在Java中实现一个(简单的)下载器应用程序作为个人练习.它将在不同的线程中运行多个作业,这样我将在执行期间始终同时下载几个文件.

我希望能够定义所有下载作业之间共享的下载速率限制,但我不知道如何执行单个下载任务.我应该怎么做呢?我应该尝试实施哪些解决方案?

谢谢.

java networking download limit rate

3
推荐指数
1
解决办法
7849
查看次数

标签 统计

java ×4

download ×3

android ×2

asynchronous ×1

io ×1

limit ×1

networking ×1

progressdialog ×1

rate ×1