gpt4 book ai didi

android - 应用程序生命周期和广播接收器

转载 作者:行者123 更新时间:2023-11-29 18:04:33 25 4
gpt4 key购买 nike

我想知道当您从主要 Activity 中创建一个广播接收器(在我的例子中是一个接近警报接收器)并且应用进程由于某种未知原因被终止时会发生什么?

无论我的应用状态如何,我都希望在我注册的广播接收器中接收到我的邻近警报,这会发生吗,或者我是否需要做一些特别的事情来确保这一点?

编辑澄清:

我必须从我的应用程序中而不是通过 list 注册接收器。由于我想要多个 proximityalerts,对于每个(不同的)位置,我需要动态创建接收器,因为我需要为每个位置注册接收器,不幸的是,它具有唯一的 ID。

创建我的 Intent/pendingintent/broadcastreceiver 的代码:

    double latitude = location.getLat();
double longitude = location.getLon();
Intent intent = new Intent(PROX_ALERT_INTENT_ID);
PendingIntent proximityIntent = PendingIntent.getBroadcast(activity.getApplicationContext(), 0, intent, 0);
lm.addProximityAlert(
latitude, // the latitude of the central point of the alert region
longitude, // the longitude of the central point of the alert region
POINT_RADIUS, // the radius of the central point of the alert region, in meters
PROX_ALERT_EXPIRATION, // time for this proximity alert, in milliseconds, or -1 to indicate no expiration
proximityIntent // will be used to generate an Intent to fire when entry to or exit from the alert region is detected
);

IntentFilter filter = new IntentFilter(PROX_ALERT_INTENT_ID);

activity.registerReceiver(new ProximityIntentReceiver(location), filter);

最佳答案

如果您希望无论您的应用状态如何都触发您的 BroadcastReceivers,那么您应该通过您的应用程序 AndroidManifest.xml 文件注册它们。

这是如何做到的。

  1. 定义一个扩展 BroadcastReceiver 的类并实现 onReceive() 方法。我看到您已经完成了 - ProximityIntentReceiver 就是那个类。

  2. 在您的 AndroidManifest.xml 文件中添加:

    <application>
    ...
    <receiver
    android:name=".MyReceiver"
    android:exported="false" >
    <intent-filter>
    <action android:name="my.app.ACTION" />
    </intent-filter>
    </receiver>
    </application>

MyReceiver 是您的接收器类的名称(在您的例子中是 ProximityIntentReceiver),而 my.app.ACTION 是您的接收器将监听的操作(在您的例子中我猜这是 PROX_ALERT_INTENT_ID 的值)。

注意:假设您的接收器名称是 .MyReceiver,则假定它位于您应用的根包中。如果不是这种情况,那么您需要提供从根开始到该类的路径。

关于android - 应用程序生命周期和广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14081064/

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