3

我正在使用 AlarmManager 启动每分钟运行的服务。但是,我收到“应用程序 blabla 已意外停止”。当我打开设备时,带有强制关闭按钮的警告对话框。我不知道错误是什么,因为我唯一的调试选项是使用 WIFI,并且每次重新启动设备时连接的 IP 都会更改。

该服务在没有启动的情况下运行良好。

这是我在应用程序下运行的 BroadcastReceiver:

    public class FPBootReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        android.os.Debug.waitForDebugger();

        Intent bootintent = new Intent(context, FPService.class);
        PendingIntent pi = PendingIntent.getService(context, 0, bootintent, PendingIntent.FLAG_UPDATE_CURRENT);

        long nextUpdateTimeMillis = DateUtils.MINUTE_IN_MILLIS;
        Time nextUpdateTime = new Time();
        nextUpdateTime.set(nextUpdateTimeMillis);

        AlarmManager FPAlarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        FPAlarm.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), nextUpdateTimeMillis, pi);
    }
}

显现:

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<application
    android:icon="@drawable/pc"
    android:label="@string/app_name" >
    <service android:name=".FPService" />

    <receiver android:enabled="true" android:name="mypackage.FPBootReceiver"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED">

    <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>

    </receiver>


    <activity
        android:name=".CF_Aachen"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

你看到我做错了这些有什么问题吗?

更新:设法调试启动,我得到 AndroidRuntime(2781): java.lang.RuntimeException: Unable to instance receiver mypackage.FPBootReceiver: java.lang.ClassNotFoundException: mypackage.FPBootReceiver in loader dalvik.system.PathClassLoader

4

2 回答 2

2

Android 系统看不到您的 Receiver,请检查您的路径,除非您的完整包实际上是“mypackage”。您需要将其设为“.mypackage.FPBootReceiver”或指定完整路径。

于 2012-06-16T01:34:11.443 回答
2

我在我的 Activity 的同一类下编写了我的 BroadcastReceiver 类。这就是它无法找到它的原因。

我在 mypackage 中创建了一个单独的类文件并在那里创建了该类,然后它就解决了。

感谢所有建议的人。

于 2012-06-16T04:42:47.457 回答