感谢这个网站,我已经取得了重大进展,我的第一个
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上以调试模式运行这个应用程序时,断点甚至没有打.当我在调试模式下运行一些其他应用程序时,这个断点会立刻被击中!但在我可以继续执行之前,执行恢复.它不止于此.
我的这个行为的推理是-1.当我运行其他应用程序时,由于上面的应用程序已经安装,它会捕获引导完成广播,因此断点被击中. (但为什么执行停止在断点?)2.当我仅运行这个应用程序时,它首先被安装,并且在安装所需的时间内,它错过了引导完成广播.
我可以用以下查询1获得一些帮助.如果没有进一步恢复,我该如何在断点停止执行?每次运行它时,我可以在仿真器中以调试模式运行已经安装的这个应用程序的版本,而不需要在仿真器上安装新的?
还有什么我做错了还是缺少什么?
请允许我知道,因为我真的需要调试onReceive()来捕获进一步的应用程序逻辑错误.非常感谢,人们.