2017-02-02 33 views
-2

我正在研究一個應用程序,其中我必須每5分鐘打一次REST風格的Web服務,以檢查新數據是否已更新,即使應用程序是由用戶關閉。我做到了這一點如何在android中運行無限期的服務

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 


    RequestQueue requestQueue = Volley.newRequestQueue(this); 


    String url = "http://www.abcert.com/wp-json/wp/v2/posts"; 
    StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        boolean Str; 
        try { 
         JSONArray jsonArray =new JSONArray(response); 
         Log.i("JSON",""+jsonArray); 


          JSONObject jsonObject = jsonArray.getJSONObject(0); 
          int id = jsonObject.getInt("id"); 

          Log.i("MyService is on the",""+id); 


        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 



       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 

        Log.i("Hey","Something went wrong"); 

       } 
      }); 
    //add request to queue 
    requestQueue.add(stringRequest); 


    return START_STICKY; 
} 

但沒有得到成功。當我關閉應用服務時,START_STICKY不起作用。

+0

添加機器人:任何地方提到的服務在mainfest文件導出= 「真」。 –

+0

什麼android:exported =「true」將工作? – hitesh

+0

嘗試它可能是你錯過了。 –

回答

0

許多應用程序使用Service這是連接到他們的數據庫,爲他們的具體任務,並在後臺運行。

Like Facebook運行MessagingService,Instagram運行NotificationService。如果你想要你可以使用handler同時你也可以選擇Scheduler

實施例使用Handler

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
final Handler handler = new Handler(); 

handler.postDelayed(new Runnable() { 
     public void run() { 

     String url = "http://www.abcert.com/wp-json/wp/v2/posts"; 
     StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
     new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       boolean Str; 
       try { 
        JSONArray jsonArray =new JSONArray(response); 
        Log.i("JSON",""+jsonArray); 


         JSONObject jsonObject = jsonArray.getJSONObject(0); 
         int id = jsonObject.getInt("id"); 

         Log.i("MyService is on the",""+id); 


       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

      } 
     }, 
     new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

       Log.i("Hey","Something went wrong"); 

      } 
     }); 

     //add request to queue 
     requestQueue.add(stringRequest);  

    handler.postDelayed(this, 1000 * 60 * 5); //Code runs every 5 minutes 
    } 
    }, 0); //Initial interval of 0 sec 

return START_STICKY; 
} 
+0

不工作!!!!!!!!! – hitesh

+0

我們在Flipkart應用程序中使用相同的代碼,你怎麼能說不工作。嘗試把烤麪包內的響應和跟蹤 – W4R10CK

+0

同時你的URL沒有提供任何數據,這是一個網站,我猜 – W4R10CK

0

我正在研究一個應用程序,我必須每隔5分鐘打一次REST風格的Web服務,以檢查新數據是否已更新,即使應用程序已關閉。

運行無限期的服務不是理想的解決方案。 Read this

爲此目的使用background scheduler,因爲它還考慮到電池的有效使用。

相關問題