Gracias mucho a este sitio, he hecho un progreso significativo con mi primer proyecto de Android.No se puede depurar a través de onReceive() en el receptor de inicio de compilación
Estoy tratando de obtener la suspensión de la ejecución en el método onReceive() de un receptor de arranque completo. A continuación están mi código manifiesto y receptor.
Android 2.3.3
API - 10
IDE - Eclipse
se ejecuta en el emulador
Manifiesto:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.demo.notepad3" >
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application android:icon="@drawable/icon" >
<activity
android:label="@string/app_name"
android:name=".ProjectTrackerHomeActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ProjectTrackerEditActivity" />
<receiver android:name=".ProjectTrackerNotification" />
<receiver
android:name=".ProjectTrackerOnBootReceiver" >
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
receptor:
public class ProjectTrackerOnBootReceiver extends BroadcastReceiver {
private ProjectTrackerDBAdapter mDbHelper;
@Override
public void onReceive(Context context, Intent intent) {
Debug.waitForDebugger();
AlarmManager
mgr=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
//I place the break point at line 2, the alarm manager line
// Further code, irrelevant
}
Mis observaciones - 1
Cuando corro t su aplicación en modo de depuración en eclipse, el punto de quiebre ni siquiera es alcanzado.
2. Cuando ejecuto alguna otra aplicación en modo de depuración, este punto de interrupción se golpea momentáneamente! Pero antes de que pueda proceder con una ejecución paso a paso, la ejecución se reanuda. No se detiene allí.
Mi razonamiento para este comportamiento es que -
1. Cuando ejecuto alguna otra aplicación, ya que esta aplicación anterior ya está instalada, capta la transmisión completa de arranque y se golpea el punto de interrupción. (¿Pero por qué la ejecución no se detiene en el punto de interrupción?)
2. Cuando solo ejecuto esta aplicación, primero se instala y en el tiempo que lleva instalarla, se pierde la transmisión completa de arranque.
Puedo obtener ayuda con las siguientes consultas:
1. ¿Cómo puedo detener la ejecución en el punto de interrupción sin que se reanude?
2. ¿De alguna manera puedo ejecutar una versión ya instalada de esta aplicación en el emulador en modo de depuración "sin tener que instalarlo recientemente" en el emulador cada vez que lo ejecuto?
3. ¿Hay algo más que esté haciendo mal o me falta algo?
Tenga la amabilidad de informarme ya que realmente necesito depurar mediante onReceive() para detectar más errores de lógica de la aplicación. Muchas gracias, amigos.
Muchas gracias. sendBroadcast() me ayudó a depurar a través del receptor :) Nombre de la clase del receptor: TrackerReceiver.java. Método de invocación de línea: sendBroadcast (nueva intención (getApplicationContext(), TrackerReceiver.class); – Nitin
Gracias, simular el "arranque completo" utilizando otro evento de difusión ayuda a depurar la mayoría de los problemas básicos. –
@BenjaminPiette jaja, buen punto. muy agotador para mantener el reinicio solo para depurar su onReceive – LuxuryMode