首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在后台执行web服务

在后台执行web服务
EN

Stack Overflow用户
提问于 2014-06-14 05:52:26
回答 2查看 4K关注 0票数 4

我需要在后台每小时执行web服务。

每小时,将检查互联网是否可用,然后执行一个web服务和更新数据。

我该怎么做?

我的背景服务

代码语言:javascript
复制
public class MyService extends Service {

   String tag="TestService";
   @Override
   public void onCreate() {
       super.onCreate();
       Toast.makeText(this, "Service created...", Toast.LENGTH_LONG).show();      
       Log.i(tag, "Service created...");
   }

   @Override
   public void onStart(Intent intent, int startId) {      
       super.onStart(intent, startId);  
       if(isInternet)
       {
           AsyTask web= new AsyTask();
           web.execute();
       }
       Log.i(tag, "Service started...");
   }
   @Override
   public void onDestroy() {
       super.onDestroy();
       Toast.makeText(this, "Service destroyed...", Toast.LENGTH_LONG).show();
   }

   @Override
   public IBinder onBind(Intent intent) {
       return null;

   }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-14 06:01:30

其想法是每小时使用AlarmManager启动一个后台服务。

设置警报管理器,每60分钟启动一次后台服务。在任何活动中都可以做到这一点。

代码语言:javascript
复制
    startServiceIntent = new Intent(context,
            WebService.class);
    startWebServicePendingIntent = PendingIntent.getService(context, 0,
            startServiceIntent, 0);

    alarmManager = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
            System.currentTimeMillis(), 60*1000*60,
            startWebServicePendingIntent);

创建一个扩展WebService的类Service,然后添加该方法来与服务的onStartCommand()方法内的服务器同步数据。另外,不要忘记在清单中声明服务。

编辑1:

代码语言:javascript
复制
public class WebService extends Service {

   String tag="TestService";
   @Override
   public void onCreate() {
       super.onCreate();
       Toast.makeText(this, "Service created...", Toast.LENGTH_LONG).show();      
       Log.i(tag, "Service created...");
   }

   @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
       super.onStart(intent, startId);  
       if(isInternet)
       {
           AsyTask web= new AsyTask();
           web.execute();
       }
       Log.i(tag, "Service started...");
   }
   @Override
   public void onDestroy() {
       super.onDestroy();
       Toast.makeText(this, "Service destroyed...", Toast.LENGTH_LONG).show();
   }

   @Override
   public IBinder onBind(Intent intent) {
       return null;

   }
票数 3
EN

Stack Overflow用户

发布于 2014-06-14 06:09:00

在计时器任务的运行方法中添加调用webservice的代码,如下所示

代码语言:javascript
复制
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
   if(isInternet)
   {
       AsyTask web= new AsyTask();
       web.execute();
   }
   Log.i(tag, "Service started...");
}
}, 0, 3600000);  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24217011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档