我已经实现了一个与警报管理器一起运行的服务。 我看了这个链接: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);
答案 0 :(得分:-1)
当您将服务配置为在远程模式下运行时(android:process =&#34;:remote&#34;),您将不得不像往常一样调试进程:remote。
个人错误: 因此,在尝试访问服务上的FirebaseUser时遇到异常。在远程模式下,您无法访问FirebaseUser,因为您的进程在另一个上下文中运行。 在初始化服务时,我不得不通过intent extras传递用户。 这就是全部!