gpt4 book ai didi

android - 未调用 BroadcastReceiver 的 onReceiver,AlarmManager

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:56:21 27 4
gpt4 key购买 nike

我正在构建一个出租车预订应用程序,我需要每 20 秒获取一次出租车的当前位置。

我已经定义了一个 AlarmManager 并需要它每 20 秒重复一次。但它不会定期重复。相反,它在 233 秒后重复了自己,而且只重复了一次。我在这里做错了什么?

我的 HomeScreen 有一个内部类 OnAlarmReceiver,在我的 HomeScreen 的 onCreate 我调用 AlarmManager

    AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(this, OnAlarmReceiver.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 20);
mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
cal.getTimeInMillis(), God.UPDATE_PENDING_INTERVAL, pi);

HomeScreen 中的内部类

public class OnAlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// PullPendingRequests.acquireStaticLock(context);
Toast.makeText(context, "Don't panik but your time is up!!!!.", Toast.LENGTH_LONG)
.show();
Log.d("Taxeeta:PullPendingRequets", "CallService Location");
context.startService(new Intent(context, PullPendingRequests.class));
}
}

我的 AndroidManifest 文件有

    <service
android:name="com.taxeeta.support.PullPendingRequests"
android:enabled="true"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Light.NoTitleBar" />

<receiver android:name=".com.taxeeta.HomeScreen.OnAlarmReceiver" />
</application>

adb shell dumpsys alarm的输出

 com.taxeeta
51471ms running, 5248 wakeups
5248 alarms: flg=0x4 cmp=com.taxeeta/.HomeScreen$OnAlarmReceiver

adb shell dumpsys alarm 的输出 | grep taxeeta

 ELAPSED_WAKEUP #7: Alarm{409303b0 type 2 com.taxeeta}
operation=PendingIntent{408ba2d8: PendingIntentRecord{40887be8 com.taxeeta broadcastIntent}}
com.taxeeta
5248 alarms: flg=0x4 cmp=com.taxeeta/.HomeScreen$OnAlarmReceiver

最佳答案

为了修复它,我删除了内部类 OnAlarmReceiver 并修复了 androidmanifest.xml 文件。

    <receiver
android:name="com.taxeeta.support.OnAlarmReceiver"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.NOTIFY" />
</intent-filter>
</receiver>

关于android - 未调用 BroadcastReceiver 的 onReceiver,AlarmManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15872880/

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