gpt4 book ai didi

android - AlarmReceiver 没有被 android :process =":remote" 调用

转载 作者:行者123 更新时间:2023-11-29 14:13:09 24 4
gpt4 key购买 nike

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

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

有什么线索吗?

这是我的接收方声明:

这个有效:

<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);

最佳答案

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

个人bug:所以我在尝试访问服务上的 FirebaseUser 时遇到了异常。在远程模式下,您无法访问 FirebaseUser,因为您的进程在另一个上下文中运行。初始化服务时,我必须通过 intent extras 传递给用户。就是这样!

关于android - AlarmReceiver 没有被 android :process =":remote" 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42880675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com