Grazie mille a questo sito, ho compiuto notevoli progressi con il mio primo progetto Android.Impossibile eseguire il debug di onReceive() nel ricevitore di avvio completato
Sto cercando di sospendere l'esecuzione nel metodo onReceive() di un ricevitore di avvio completato. Di seguito sono riportati il mio codice manifest e ricevitore.
Android 2.3.3
API - 10
IDE - Eclipse
Running on emulatore
manifesto:
<?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>
Ricevitore:
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
}
Le mie osservazioni -
1 Quando corro t la sua applicazione in modalità di debug su Eclipse, il punto di interruzione non è nemmeno colpito.
2. Quando eseguo un'altra applicazione in modalità di debug, questo punto di interruzione viene colpito momentaneamente! Ma prima che possa procedere con un'esecuzione passo passo, l'esecuzione riprende. Non si ferma qui.
Il mio ragionamento per questo comportamento è quello -
1. Quando eseguo qualche altra applicazione, poiché questa app è già installata, intercetta la trasmissione di avvio completa e quindi viene colpito il punto di interruzione. (Ma perché l'esecuzione non si ferma al punto di interruzione?)
2. Quando eseguo solo questa app, viene installata prima e nel tempo necessario per l'installazione, manca la trasmissione di avvio completa.
Posso ottenere assistenza con le seguenti domande:
1. Come posso interrompere l'esecuzione al punto di interruzione senza che riprenda ulteriormente?
2. Posso eseguire in qualche modo una versione già installata di questa app sull'emulatore in modalità di debug "senza averla per essere appena installata" sull'emulatore ogni volta che la eseguo?
3. C'è qualcos'altro che sto facendo male o manco qualcosa?
Gentilmente fammi sapere poiché ho davvero bisogno di eseguire il debug di onReceive() per catturare ulteriori bug di logica dell'applicazione. Grazie mille, gente.
Grazie mille. sendBroadcast() mi ha aiutato a eseguire il debug attraverso il ricevitore :) Nome classe destinatario: TrackerReceiver.java. Line in metodo chiamare: sendBroadcast (new Intent (getApplicationContext(), TrackerReceiver.class); – Nitin
Grazie, simulando il "boot completato" utilizzando un altro evento di trasmissione aiuta il debug la maggior parte dei problemi di base –
@BenjaminPiette haha buon punto potrebbe ottenere.. molto stancante per continuare a riavviare solo per eseguire il debug sul tuo Ricevimento – LuxuryMode