gpt4 book ai didi

Android BroadcastReceiver 启动 Activity

转载 作者:行者123 更新时间:2023-11-29 19:15:37 24 4
gpt4 key购买 nike

有了这个 BroadcastReceiver,我可以在每次设备屏幕关闭时启动一个 Activity 。唯一的问题是同一个 Activity 启动了 2 次。我不明白这个问题

public class ScreenReceiver extends BroadcastReceiver {

@Override
public void onReceive(final Context context, Intent intent) {

if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
intent = new Intent(context, Login2.class);
context.startActivity(intent);
}
}
}

启动receiver进入oncreate of activity

IntentFilter intentFilter = new IntentFilter(Intent.ACTION_SCREEN_ON);
intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
mReceiver = new ScreenReceiver();
registerReceiver(mReceiver, intentFilter);

list

<receiver android:name="utils.ScreenReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.SCREEN_OFF" />
<action android:name="android.intent.action.SCREEN_ON" />
</intent-filter>
</receiver>

最佳答案

您实际上注册了 ScreenReceiver 的两个实例从而响应两次,并创建两个版本的 Activity .您首先使用 <intent-filter> 在系统范围内注册它应用在你的 list 中。其次,您正在注册 ScreenReceiver 的不同实例调用 registerReceiver(mReceiver, intentFilter); .您应该只使用一种机制来注册您的 BroadcastReceiver .

此外,如果您坚持使用 Activity,请确保您正在调用取消注册接收器的电话。 registerReceiver(mReceiver, intentFilter);方法。

关于Android BroadcastReceiver 启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43619147/

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