2012-02-27 94 views
0

我创建了一个web服务,我想用一个android手机作为终端。 手机必须每隔一段时间检查web服务上的消息。Android服务在后台

是否有可能创建一个“后台任务”或服务,每隔一段时间检查特定的web服务? 这不是电子邮件的工作方式吗?应该是可以的。 如果没有,我怎样才能创建一个“推”服务,达到android手机?

我创建了一个简单的服务,但它只运行几分钟,然后“停止”与服务器通话。看起来像是在屏幕锁定时发生。

我有一个类,它扩展了服务。我重写下面的方法。

@Override 
public void onStart(Intent intent, int startId) { 
    Toast.makeText(this, "Service started", Toast.LENGTH_LONG).show(); 
    Log.d(_TAG, "onStart"); 
    timer.scheduleAtFixedRate(new TimerTask() { 
     public void run() { 
      Log.d(_TAG, "running task!! Hello :)"); 
      try { 
       sendSMS(); 
      } catch (ClientProtocolException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    }, 0, 60000); 
} 

工程就像一个魅力,直到显示被锁定。

这款手机是一款HTC Desire S的

我很新到Android的研究与开发,不知道为此框架。

Regards ..

+0

是的,这是可能的。 – 2012-02-27 23:10:24

+0

你有什么例子吗?框架使用? .. – hogni89 2012-02-27 23:11:21

+0

没有框架需要一个简单的任务,如投票。创建后台服务 - >查询URL - >解析响应 - >利润( - >重复)。你有一些研究在你面前。 – 2012-02-27 23:17:40

回答

1

首先,您需要决定将数据推送到设备还是从设备上拉数据。取决于您的决定实施变化。

您可以创建后台服务将继续轮询每x分钟后拉你的数据,

试试这个博客帖子http://www.zubha-labs.com/android-services-101-part-1,详细了解服务,并具有源代码的实际执行。

或者

使用Android C2DM http://code.google.com/android/c2dm/从服务器推。

+0

想拉。你有这方面的例子或教程吗? – hogni89 2012-02-27 23:12:12

+0

刚刚更新后的例子看看。另外我建议你阅读这个博客http://zubhium.posterous.com/whats-the-right-way-to-beta-test-your-mobile关于建设踢屁股android应用程序的整体伟大的指针。 – kodeshpa 2012-03-02 00:31:53

0

完全可以创建背景Service

但是,如果服务的主要目的是定期检查服务器是否有新消息,那么更适合使用推送服务的电池寿命。谷歌有一个名为C2DM,目前免费。

+0

我一直在推动..我需要拉动。 – hogni89 2012-02-27 23:13:14

2

正如其他海报指出的那样,通过基于推送的方式接收意图会更适合您的应用程序,因此您不会浪费资源不断地进行投票。

但是,如果您需要在某些指定的时间间隔轮询和/或执行某些代码,那么Alarm Manager就是您想要的。您注册您的应用程序将在某些时间点被调用,这是您启动服务来轮询数据的时间。

http://developer.android.com/reference/android/app/AlarmManager.html

+0

看起来很有希望。稍后再看这个:) – hogni89 2012-02-27 23:43:27