如何在android中下载带有服务的文件?
我想用服务从互联网上下载文件。 我发现源代码和代码运行良好。 但是,当我从应用程序下载停止或当我清除RAM时,它也停止了,但我遇到了问题。 因此,我希望找到下载Google Play之类的代码,这些代码在清除内存或应用程序历史记录时不会停止。 这是我的源代码:
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());
}
}
}
}
你可以尝试调用startForeground。 看看这篇文章了解更多信息。
链接地址: http://www.djcxy.com/p/71715.html