解决方法
在
Service中执行操作不会使其在后台运行.您还必须在服务中创建一个Thread,以等待下载完成.
如果您使用的是活动本地的线程,您将无法离开活动,将其发送到后台或因来电等中断.这可能会导致您的应用被操作系统杀死以释放记忆.在这种情况下,您的线程将丢失,并且可能无法重新启动并使您的应用程序崩溃.
如果你创建一个服务,那么你就不太可能被杀死,只有一个线程,你可以指定操作系统在操作系统被杀死后重启服务.这使得该服务成为非常长时间下载的更安全选择.我在我的一个应用程序中使用服务来下载一个20 MB的文件,并在此服务中创建一个执行下载的线程.
服务只能帮助您封装下载并将其与活动分离,并在操作系统中为您提供另一种状态,以防止线程因内存不足而消失.