gpt4 book ai didi

android - 从本地服务向 Activity 发送消息的最简单方法是什么

转载 作者:搜寻专家 更新时间:2023-11-01 08:16:32 26 4
gpt4 key购买 nike

我有一项正在接听电话的服务。当手机进入空闲状态时,我想向我的 Activity 发送一条消息。看起来我有两个选择来完成这个。 BroadcastReceiver 并绑定(bind)到服务。 BroadcastReceiver 看起来是一种更简单的机制,所以我尝试了以下测试。

在我的 Activity 中:

@Override
protected void onStart() {
super.onStart();
IntentFilter filter = new IntentFilter("MyAction");
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Yay.......");
abortBroadcast();
}
}, filter);
}

在我正在监听事件的服务中,当我检测到我想要的事件时:

    Intent localIntent = new Intent(_context, MainActivity.class);
intent.setAction("MyAction");
_context.sendOrderedBroadcast(localIntent, null);

在我的测试中,在我观看了使用调试器发送的广播后,onReceive() 方法从未被调用。我错过了什么?另外,BroadcastReceiver 是本地服务与 Activity 通信的最简单方式吗?

最佳答案

我认为我在最初的测试用例中遇到了一些问题。1.当我在我的服务中创建我的Intent时,它应该以“action”作为参数。2. 我认为我需要将 Intent 过滤器添加到我的 list 中。

我现在的工作示例是:

Activity :

        startService(intent);

IntentFilter filter = new IntentFilter(PhoneListeningService.PHONE_IDLE);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "Yay.......");
}
}, filter);

list :

    <activity android:name=".MainActivity" android:screenOrientation="portrait" >
<intent-filter>
<action android:name="com.ncc.PhoneListeningService.action.PHONE_IDLE" />
</intent-filter>
</activity>

服务:

为命名的“ Action ”声明公共(public)常量并广播一个 Intent 。

public static final String PHONE_IDLE = "com.ncc.PhoneListeningService.action.PHONE_IDLE";

...我的听众检测到手机空闲:

            Intent intent = new Intent(PHONE_IDLE);
sendBroadcast(intent);

关于android - 从本地服务向 Activity 发送消息的最简单方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3998650/

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