我正在尝试从Web服务器下载一个大的.zip文件,但我有一个奇怪的行为,描述是:
-
<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)
错误:
解决方法:
关于这个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) 我写了一个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服务器.
我有一个DataInputStream我从一个Socket.有什么办法可以设置超时dis.read(...)吗?目前我产生了一个新线程来进行读取.虽然父线程thread.join(timeout)在中断之前会等待.我知道nio,但我认为我不想在这一点上重构那么多.谢谢.
我有一个简单的代码应该执行一项任务,当单击按钮下载文件,将其保存到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中实现一个(简单的)下载器应用程序作为个人练习.它将在不同的线程中运行多个作业,这样我将在执行期间始终同时下载几个文件.
我希望能够定义所有下载作业之间共享的下载速率限制,但我不知道如何执行单个下载任务.我应该怎么做呢?我应该尝试实施哪些解决方案?
谢谢.