这是我从xampp server下载文件的代码。但我无法下载文件。任何人都可以修复它吗?。我的老师说使用AsyncTaskn如何使用它?它显示错误“应用程序可能正在做在其主线上做了太多工作。“
public class MainActivity extends ActionBarActivity
{
Button b1;
String FileDownloadPath="http://192.168.1.25/dinesh/di.mp3";
String FileSavePath="com.example.music11/music";
ProgressDialog dialog=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1=(Button)findViewById(R.id.button1);
b1.setOnClickListener(new OnClickListener(){
public void onClick(View arg0)
{
dialog=ProgressDialog.show(MainActivity.this,"", "file is being download", true);
new Thread(new Runnable()
{
public void run()
{
downlaodfile(FileDownloadPath,FileSavePath);
}
}).start();
}
});
}
public void downlaodfile(String FileDownloadPath,String FileSavePath )
{
try{
File SaveFile=new File(FileSavePath);
URL U=new URL(FileDownloadPath);
URLConnection con=U.openConnection();
int lengthofcontent=con.getContentLength();
DataInputStream ds=new DataInputStream(U.openStream());
byte[] buffer=new byte[lengthofcontent];
ds.readFully(buffer);
ds.close();
DataOutputStream db=new DataOutputStream(new FileOutputStream(SaveFile));
db.write(buffer);
db.flush();
db.close();
hideProgressIndicator();
}
catch(FileNotFoundException e)
{
hideProgressIndicator();
}
catch(IOException e)
{
hideProgressIndicator();
}
catch(Exception e){
}
}
private void hideProgressIndicator() {
// TODO Auto-generated method stub
runOnUiThread(new Runnable(){
public void run()
{
dialog.dismiss();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
答案 0 :(得分:0)
这是使用“OkHttp”改善网络的另一个很好的选择。
尝试使用此链接https://github.com/square/okhttp/wiki/Recipes下载文件(示例)。
对于非常快速的网络操作,这是比原生HttpClient更好的网络库。只需尝试一下。
感谢。