gpt4 book ai didi

android - 注销接收器是必要的吗?

转载 作者:行者123 更新时间:2023-11-29 17:41:31 27 4
gpt4 key购买 nike

我有一个警报管理器,我已经在我的代码中注册了它的接收器。在 Timer 的情况下拥有警报管理器的全部意义在于它应该在暂停状态下在后台运行。现在,我是在 onPause() 还是在 OnDestroy() 中注销它,它是否仍会在后台运行并唤醒并且接收器会收到它?

编辑:

   @Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, MyClass.class);
i.putExtra("fromReciever", true);
startActivity(i);

}

最佳答案

我建议您在 AndroidManifest.xml 文件中注册它。示例:

<receiver android:name="com.example.android.MyReceiver" >
<intent-filter>
<action android:name="com.example.android.USER_ACTION" />
</intent-filter>
</receiver>

只要应用程序安装在您的设备上,这将使您的接收器保持注册状态。您所要做的就是实现它:

public class MyReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
}

}

你已经准备好了。

此外,您可以查看 this tutorial获取更多信息。

已添加

如果你想恢复你的Activity,你可以在你的ReceiveronReceive方法中添加这段代码。

Intent intent = new Intent(this, YourActivity.class);
intent.putExtra("fromOnReceive", true);
context.startActivity(intent);

然后,在您的 Activity onCreate 方法中,您检查它是否是从您的 Receiver

调用的
@Override
protected void onCreate(Bundle savedInstanceState) {
if(getIntent().hasExtras()){
boolean fromReceiver = getIntent().getExtras().getBoolean("fromOnReceive");
if(fromReceiver)
//Do work
}
}

关于android - 注销接收器是必要的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28614168/

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