2013-07-01 5 views
1

Я пытаюсь удалить специальный реестр в базе данных после выхода из приложения. Для этой проблемы я вызываю IntentService, который работает теоретически при уничтожении идентификатора приложения. Проблема в том, что, хотя это намерение не работает должным образом, и реестр не удаляется. Вот код, если вы можете помочь. IntentService:Android: IntentService, используемый в onDestroy()

public class FinIntentService extends IntentService{ 
    String levelstring = "22"; 
    int pid; 
    static String pids; 
    BroadcastReceiver batteryReceiver = null; 
    String url = "10.0.0.13"; 
    private static String url_crear = "http://10.0.0.13/subida/create_candidato.php"; 
    private static final String url_delete = "http://10.0.0.13/subida/delete_candidato.php"; 
    JSONParser jsonParser = new JSONParser(); 

    @SuppressLint("NewApi") 
    static String device_id = Build.SERIAL; 
    static String PDA = device_id.substring(device_id.length() - 6); 


      public FinIntentService() { 
        super("FinIntentService"); 
       } 

      @Override 
      protected void onHandleIntent(Intent intent) 
      { 

       int success; 



        try { 


         List<NameValuePair> params = new ArrayList<NameValuePair>(); 
         params.add(new BasicNameValuePair("id", Titulacion.getPID())); 


         JSONObject json = jsonParser.makeHttpRequest(
           url_delete, "POST", params); 


         Log.d("Delete Product", json.toString()); 

         success = json.getInt("success"); 

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



     } 

Бревенчатый, например, не достиг

Основная деятельность:

public void onDestroy(){ 
    super.onDestroy(); 
    Intent msgIntent = new Intent(Titulacion.this, FinIntentService.class); 
    startService(msgIntent); 

} 

Я пытался использовать AsyncTask раньше, но я не мог получить желаемый эффект при OnDestroy. однако в некоторых случаях (1 из 30) синтаксис выполнял свою задачу.

+1

Просто угадать .. может быть, приложение будет уничтожено до того, как намерение будет подано? –

+0

Да, я так думаю, но есть ли решение? – Katherine99

+0

Почему вы делаете intenservice для удаления реестра в ddbb? Почему вы не удаляете его напрямую? И: почему вы не удаляете его при запуске приложения? – inigoD

ответ

0

Фактически onDestroy метод нельзя назвать.

onDestroy вызывается только тогда, когда система не хватает ресурсов (памяти, процессорного времени и так далее) и принимает решение убить вашу деятельность/приложение, или когда кто-то звонит закончить() в вашей деятельности.

Если вы хотите, чтобы освободить некоторые ресурсы, вы должны сделать это вonPause()вместо этого.

+0

При нажатии кнопки «Назад» onDestroy() вызывается на лету. –

+0

@ VittorioJimmyCozzolino, вот почему я говорю: «На самом деле метод onDestroy нельзя назвать». :) –

+0

Привет, спасибо за объяснение, но если я запустил его onPause(), когда пользователь перейдет к следующему действию, то намерение будет выполнять свою задачу, я полагаю. – Katherine99

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