Невозможно выполнить отладку с помощью onReceive () в приемнике завершения загрузки

Большое спасибо этому сайту, я добился значительного прогресса в моем первом Android-проекте.

Я пытаюсь приостановить выполнение в методе onReceive () получателя завершения загрузки. Ниже мой манифест и код получателя.

Android 2.3.3
API - 10
IDE - Eclipse
Работает на эмуляторе

Манифест:

<?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>

Получатель:

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
    }

Мои наблюдения -
1. Когда я запускаю это приложение в режиме отладки в eclipse, точка останова даже не достигается.
2. Когда я запускаю какое-то другое приложение в режиме отладки, эта точка останова мгновенно срабатывает! Но прежде чем я смогу перейти к пошаговому выполнению, выполнение возобновится. Это еще не все.

Я считаю такое поведение следующим -
1. Когда я запускаю какое-то другое приложение, поскольку это приложение уже установлено, оно улавливает широковещательную передачу о завершении загрузки и, таким образом, срабатывает точка останова. (Но почему выполнение не останавливается в точке останова?)
2. Когда я запускаю только это приложение, оно устанавливается первым и за время, необходимое для установки, пропускает широковещательную передачу о завершении загрузки.

Могу я получить помощь по следующим вопросам -
1. Как я могу остановить выполнение в точке останова без его дальнейшего возобновления?
2.Могу ли я каким-то образом запускать уже установленную версию этого приложения на эмуляторе в режиме отладки, «не требуя его новой установки» на эмуляторе каждый раз, когда я запускаю его?
3. Есть ли что-то еще, что я делаю неправильно или что-то упускаю?

Пожалуйста, дайте мне знать, так как мне действительно нужно отлаживать с помощью onReceive (), чтобы отловить дальнейшие ошибки логики приложения. Большое спасибо, ребята.

13
задан LuxuryMode 25 July 2012 в 20:53
поделиться