Iniciando um plug-in Phonegap após a reinicialização do dispositivo

Estou no processo de desenvolvimento de um aplicativo Phonegap híbrido para Android. O aplicativo usa apenas o plug-in que estou desenvolvendo também. O plugin faz três coisas

Observa alterações de localização geográfica (em primeiro plano e em segundo plano)Configura um alarme de meia hora para executar determinadas tarefas periódicasEscuta mensagens push. Eu uso opushy.me serviço e o código que eu uso seguea documentação deles.

Eu havia implementado o código para fazer com que o aplicativo sintonizasse as reinicializações do dispositivo com certa apreensão, mas acabou sendo fácil (graças às informações que encontrei em outros tópicos no SO)

package com.example.plugin;

import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaWebView;
import android.content.Context;
import android.content.BroadcastReceiver;
import android.content.pm.PackageManager;
import android.app.Activity;

import android.content.Intent;

public class Rebooter extends BroadcastReceiver
{
 @Override
 public void onReceive(Context context, Intent intent) 
 {
  Intent i = new Intent(context, MyAppCordovaPlugin.class); 
  i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  context.startActivity(i);  
 }
}

Registro o receptor de reinicialização assim

<receiver android:enabled="true" android:name=".Rebooter" 
 android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
 <intent-filter>
  <action android:name="android.intent.action.BOOT_COMPLETED" />
  <category android:name="android.intent.category.DEFAULT" />
 </intent-filter>
</receiver>

MyAppCordovaPlugin é o ponto de entrada para meu aplicativo / plugin - aquele que estende oCordovaPlugin classe. Aqui está o que eu faço lá

public class MyAppCordovaPlugin extends CordovaPlugin
{
 private Context context;

 public void initialize(CordovaInterface cordova, CordovaWebView webView) 
 {
  super.initialize(cordova, webView);
  this.context = cordova.getActivity().getApplicationContext();
  //setup pushy.me broadcast receiver
  //setup geolocation changes receiver
  //setup broadcast receiver for a half-hourly alarm
 } 

 @Override
 public void onResume(boolean multitasking) 
 {
  super.onResume(multitasking);
  //unregister background location change receiver, if present
  //switch geolocation to foreground mode. i.e. using
  //FusedLocationApi.requestLocationUpdates
 }

 @Override
 public void onPause(boolean multitasking) 
 {
  super.onPause(multitasking);
  //stop request for foreground location updates, if present
  //switch geolocation to background mode, i.e by
  //registering a broadcast receiver that listens for location change 
  //broadcasts
 } 

Quando inicio o aplicativo manualmente no meu dispositivo de teste Android 4.4.2, tudo funciona perfeitamente. isto é

As alterações de localização geográfica são detectadas: em primeiro plano e em segundo planoas mensagens push são recebidas. Mais uma vez, tanto em f / ge em b / gO alarme de meia hora funciona

Quando examino o aplicativo em execução, acho que ele consiste em um serviçoPushySocketService e o processo principal,com.example.app que está marcado como sendo usado. O uso da memória é considerável.

Quando reinicio o telefone, ainda encontro o mesmo serviço e "processo principal" em execução. No entanto, o uso de memória relatado para o processo principal é significativamente menor.

Mais importante: o aplicativo não recebe mensagens push e não responde a alterações na localização geográfica. Isso só começa a acontecer após o lançamento do aplicativo,main activity.

Devo estar faltando alguma coisa aqui - para que o aplicativo reiniciado não inicie automaticamentemain activity? Nesse caso, deve haver algo errado com o meuRebooter.onReceive código?

Para completar, devo mencionar

Somente os receptores de transmissão Pushy.me e Rebooter são declarados estaticamente no arquivo plugin.xml. A localização geográfica e os receptores de transmissão de alarmes são registrados dinamicamente no código do meu plug-in.Estou construindo o aplicativo usando o Phonegap CLI v 6.4.2 e JDK 7

Estou claramente fazendo algo errado aqui. Ficaria muito grato a qualquer pessoa que possa me colocar no caminho certo.

questionAnswers(2)

yourAnswerToTheQuestion