Большое спасибо этому сайту, я добился значительного прогресса в своем первом проекте для 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(), чтобы выявить дальнейшие логические ошибки приложения. Большое спасибо, ребята.