不是 Activity 子类或别名

Zul*_*der 0 android

您好,我正在尝试遵循以下步骤: https://technology.jana.com/2014/10/28/periodic-background-tasks-in-android/

但由于某种原因,我得到:运行应用程序时出错:services.BackgroundService 不是 Activity 子类或别名

安卓新手...

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mycompany.app">

<application
    android:name=".Virgo">

    <receiver android:name="receivers.SyncReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BATTERY_LOW" />
            <action android:name="android.intent.action.BATTERY_OKAY" />
            <action android:name="com.mycompany.app.SYNC_TASK_HEART_BEAT" />
        </intent-filter>
    </receiver>

    <receiver android:name="receivers.BootAndUpdateReceiver">
        <intent-filter>
            <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

    <service android:name="services.BackgroundService" />

</application>
Run Code Online (Sandbox Code Playgroud)

这是我要求的服务代码:

public class SyncReceiver extends BroadcastReceiver{
    private static final String TAG = "SyncReceiver";
    private static final String INTENT_ACTION = "com.rhotechnology.app.SYNC_TASK_HEART_BEAT";

    @Override
public void onReceive(Context context, Intent intent) {
        if ((intent.getAction() !=null)) {

            Virgo virgo = (Virgo) context.getApplicationContext();
            SharedPreferences sharedPreferences = virgo.getSharedPreferences ("syncPreferences", android.content.Context.MODE_PRIVATE);
            if (intent.getAction().equals("android.intent.action.BATTERY_LOW")) {
                sharedPreferences.edit().putBoolean(Constants.BACKGROUND_SERVICE_BATTERY_CONTROL, false).apply();
                stopSyncReceiverHeartBeat(context);
            } else if (intent.getAction().equals("android.intent.action.BATTERY_OKAY")) {
                sharedPreferences.edit().putBoolean(Constants.BACKGROUND_SERVICE_BATTERY_CONTROL, true).apply();
                restartSyncReceiverHeartBeat(context, virgo);
            } else if (intent.getAction().equals(INTENT_ACTION)) {
                onSync(context, virgo);
            }

        }

    }

public void onSync(Context context, Virgo virgo){
    Log.v(TAG,"Syncing");
}

public void restartSyncReceiverHeartBeat(Context context, Virgo virgo) {
    SharedPreferences sharedPreferences = virgo.getSharedPreferences ("syncPreferences", MODE_PRIVATE);
    boolean isBatteryOk = sharedPreferences.getBoolean(Constants.BACKGROUND_SERVICE_BATTERY_CONTROL, true);
    Intent alarmIntent = new Intent(context, Virgo.class);
    boolean isAlarmUp = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_NO_CREATE) != null;

    if (isBatteryOk && !isAlarmUp) {
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarmIntent.setAction(INTENT_ACTION);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0);
        alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent);
    }
}

public void stopSyncReceiverHeartBeat(Context context) {
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent alarmIntent = new Intent(context, Virgo.class);
    alarmIntent.setAction(INTENT_ACTION);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0);
    alarmManager.cancel(pendingIntent);
}
Run Code Online (Sandbox Code Playgroud)

}

Zul*_*der 5

运行/调试配置 > 启动中的配置错误,有一个活动在那里并且与清单不匹配!