您的位置:首页 > 其它

Service学习——第二篇(模拟执行长时间任务)

2014-09-21 11:38 204 查看
Service学习——第二篇

在服务中执行长时间运行的任务

这个是在第一篇的代码之上进行的添加,其他代码请参考第一篇。

通过本篇实例,你可以明显发现,当你进行一个长时间的任务时,整个活动都是被暂停了5秒,没有响应(活动和服务在同一个线程上运行),这会给用户造成不好的体验。

所以我们要解决这个不好的体验,在下一篇中,将写到相关的解决办法。

MyService代码:

package com.example.myservice;

import java.net.URL;

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

import android.widget.Toast;

public class MyService extends Service{

publicMyService() {

//TODO Auto-generated constructor stub

}

@Override

publicIBinder onBind(Intent arg0) {

//TODO Auto-generated method stub

returnnull;

}

@Override

publicint onStartCommand(Intent intent, int flags, int startId) {

//TODO Auto-generated method stub

//我们希望这个服务在被显示停止前一直运行,所以返回“粘性的”状态

Toast.makeText(this,"Service Started", Toast.LENGTH_LONG).show();

try{

intresult = DownloadFile(new URL("http://www.baidu.com/qinjianbo.pdf"));

Toast.makeText(this,"Downloaded" + result + " byte", Toast.LENGTH_LONG).show();

}catch (Exception e) {

//TODO: handle exception

}

returnSTART_STICKY;

}

//这个方法用来模拟下载一个程序

privateint DownloadFile(URL url) {

try{

Thread.sleep(5000);

}catch (Exception e) {

//TODO: handle exception

}

return1000;

}

@Override

publicvoid onDestroy() {

//TODO Auto-generated method stub

super.onDestroy();

Toast.makeText(this,"Service Stopped", Toast.LENGTH_LONG).show();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐