How download file with service in android?
I want download a file from internet with service. I found the source code and the code worked well. But i have a problem when i back from app the download are stopping or when i clear RAM, it also are stopping. So that i want found downloading code such as Google Play, which never stop when clear RAM, or app history. This is my source code:
public class Temp extends IntentService {
public static final int UPDATE_PROGRESS = 8344;
private int lastupdate=0;
private NotificationManager nm;
private Builder mBuilder;
public Temp() {
super("Temp");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("SERVICE-ONCOMMAND", "onStartCommand");
return START_STICKY;
}
@Override
protected void onHandleIntent(Intent intent) {
Log.e("ok","ok");
nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mBuilder = new NotificationCompat.Builder(this);
mBuilder.setContentTitle(
"Picture Download dnsadg sadgasjdgashgd asgd asjdg asjgd sajgd s")
.setContentText("Download in progress")
.setSmallIcon(R.drawable.icon_app).setContentInfo("0%");
mBuilder.setOngoing(true);
File root = new File(Environment.getExternalStorageDirectory()
+ "/aaaa");
String urlToDownload = "http://dl2.mid.az/endir.php?file=uploads/Exclusive/miri_yusif_-_yoxam_men_mp3.mid.az.mp3";
// ResultReceiver receiver = (ResultReceiver) intent.getParcelableExtra("receiver");
try {
URL url = new URL(urlToDownload);
URLConnection connection = url.openConnection();
connection.connect();
// this will be useful so that you can show a typical 0-100% progress bar
int fileLength = connection.getContentLength();
// download the file
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(new File(root.getPath(),
"ok.mp3"));
byte data[] = new byte[1024];
long total = 0;
int count;
while ((count = input.read(data)) != -1) {
total += count;
progressChange((int)(total * 100) / fileLength);
// publishing the progress....
// Bundle resultData = new Bundle();
// resultData.putInt("progress" ,(int) (total * 100 / fileLength));
// receiver.send(UPDATE_PROGRESS, resultData);
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (IOException e) {
e.printStackTrace();
}
// Bundle resultData = new Bundle();
// resultData.putInt("progress" ,100);
// receiver.send(UPDATE_PROGRESS, resultData);
}
@Override
public void onDestroy() {
Log.e("DESTROY", "DESTROY");
super.onDestroy();
}
void progressChange(int progress){
if (lastupdate != progress) {
lastupdate = progress;
// not.contentView.setProgressBar(R.id.status_progress,
// 100,Integer.valueOf(progress[0]), false);
// inform the progress bar of updates in progress
// nm.notify(42, not);
if (progress < 100) {
mBuilder.setProgress(100, Integer.valueOf(progress),
false).setContentInfo(progress+"%");
nm.notify(12, mBuilder.build());
Intent i = new Intent("com.russian.apps.TabActivity").putExtra("some_msg",progress+"%");
this.sendBroadcast(i);
} else {
mBuilder.setContentText("Download complete")
// Removes the progress bar
.setProgress(0, 0, false).setOngoing(false).setContentInfo("");;
nm.notify(12, mBuilder.build());
}
}
}
}
You could try calling startForeground. Check out this post for more information.
链接地址: http://www.djcxy.com/p/71716.html上一篇: Spring web服务流