0

我的应用程序应该检查每X分钟。网页内容和我必须实现wakeLock,因为它应该在屏幕关闭时工作,但同时我必须使用AsyncTask,因为它使用网络(在主线程中禁用它)。背景服务wakelock和线程

确保.release()会被调用的好方法是什么?

Block PostExecute并非全部调用(当doInBackground()中有错误时),最后在主线程中也是如此。

回答

0

如果您使用Google Cloud Messaging,则可以在设备请求服务器数据获取时使用定义的X分钟时间从服务器进行控制。您的移动应用程序将对更新的服务器数据做出最大响应,并且我们将减少服务器负载以仅在需要时加载。

GCM:入门 http://developer.android.com/google/gcm/gs.html

当你实现GCM,您的服务器可以发送发送到同步或邮件与有效载荷的设备。 (http://developer.android.com/google/gcm/adv.html

在您的移动应用程序中,您将获得一个类,extends GCMBaseIntentService,您将收到一个onMessage调用,在这里您可以发出服务器请求并发出通知。

@Override 
protected void onMessage(Context context, Intent intent) { 
    try { 
     conn = (HttpURLConnection) url.openConnection(); 
     conn.setDoOutput(true); 
     conn.setUseCaches(false); 
     conn.setFixedLengthStreamingMode(bytes.length); 
     conn.setRequestMethod("POST"); 
     conn.setRequestProperty("Content-Type", 
       "application/x-www-form-urlencoded;charset=UTF-8"); 
     // post the request 
     OutputStream out = conn.getOutputStream(); 
     out.write(bytes); 
     out.close(); 
     // handle the response 
     int status = conn.getResponseCode();    
... 
+0

不,我不使用GCM - 我终于找到了一些相关的问题(和答案 - 我在下面发布)。 – 2013-05-07 18:54:43