2017-02-02 2 views
-2

Я работаю над приложением, в котором я должен ударить веб-службу RESTful каждые 5 минут, чтобы проверить, обновлены ли новые данные или нет, даже если приложение закрыт пользователем. Я сделал этоКак запустить службу в течение неопределенного периода времени в 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

какой андроид: exported = "true" будет работать? – hitesh

+0

попробуйте, возможно, вам это не хватает. –

ответ

0

Многие приложения используют Service, который подключен к их БД, для их конкретных задач и запускается в фоновом режиме.

Как работает 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

В то же время, когда вы не указали какие-либо данные, это веб-сайт, я думаю – W4R10CK

0

Я работаю над приложением, в котором я должен удалять веб-службу RESTful каждые 5 минут, чтобы проверить, обновлены ли новые данные или нет, даже если приложение закрыто пользователем.

Запуск бессрочного обслуживания не является идеальным решением для него. Read this.

Для этого используется background scheduler, так как он также заботится об эффективном использовании батареи.

Смежные вопросы