没有使用android调用AlarmReceiver:process =“:remote”

时间:2017-03-18 22:33:04

标签: android service broadcastreceiver

我已经实现了一个与警报管理器一起运行的服务。 我看了这个链接:Should I use android: process =“:remote” in my receiver?

我认为这对我的应用程序来说是个不错的功能,因为我想让我的应用程序关闭后服务继续运行。
但是当我将这行配置添加到清单上的接收器时,我的服务停止被调用。

任何线索?

这是我的接收者声明:

这有效:

<receiver
        android:name=".service.MyAlarmReceiver"
        android:enabled="true"
        android:exported="false">
        <intent-filter>
            <action android:name=".service.MyAlarmReceiver"></action>
        </intent-filter>
    </receiver>

这不会起作用:

<receiver
        android:name=".service.MyAlarmReceiver"
        android:enabled="true"
        android:process=":remote"
        android:exported="false">
        <intent-filter>
            <action android:name=".service.MyAlarmReceiver"></action>
        </intent-filter>
    </receiver>


public class MyAlarmReceiver extends BroadcastReceiver {
    public static final int REQUEST_CODE = 12345;

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "Time to start scan service!");
        Intent intent = new Intent(context, BeaconFinderService.class);
        context.startService(intent);
    }
}

这就是我启动闹钟管理器的方式:

// Construct an intent that will execute the AlarmReceiver
Intent intent = new Intent(getApplicationContext(), MyAlarmReceiver.class);
final PendingIntent pIntent = PendingIntent.getBroadcast(getApplicationContext(), MyAlarmReceiver.REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), Constants.BLE_SERVICE_LOOP_TIME, pIntent);

1 个答案:

答案 0 :(得分:-1)

当您将服务配置为在远程模式下运行时(android:process =&#34;:remote&#34;),您将不得不像往常一样调试进程:remote。

个人错误: 因此,在尝试访问服务上的FirebaseUser时遇到异常。在远程模式下,您无法访问FirebaseUser,因为您的进程在另一个上下文中运行。 在初始化服务时,我不得不通过intent extras传递用户。 这就是全部!