销毁后调用活动方法
Posted
技术标签:
【中文标题】销毁后调用活动方法【英文标题】:call activity method after destroy 【发布时间】:2017-07-17 05:31:50 【问题描述】:我正在使用 FCM 来获取消息,并使用接收器将消息广播到我的接收器
接收方代码:
public class MessageReceiver extends BroadcastReceiver
private FCMInterface listener;
public MessageReceiver(FCMInterface listener)
this.listener = listener;
@Override
public void onReceive(Context context, Intent intent)
我正在使用接口将接收器连接到活动(活动实现 FCMInterface)
问题是如果活动 onDestroy 调用然后我调用我的接口的函数会发生什么?
【问题讨论】:
您需要检查 activity.isFinishing() 的真假以进行安全编码 @RasoulMiri 我想知道方法是否会调用 很方便,只需要放一个Log.i("==","isCall");在函数中,看看它是否被打印了 【参考方案1】:即使在 onDestroy() 方法被调用之后,类中实现的方法也会被调用。
但您无法再访问活动上下文或与 UI 相关的任何内容。
在设置广播接收器时,您应该在 start() 和 stop() 生命周期回调中注册和取消注册。不这样做会导致内存泄漏异常。
在良好的 android 编程实践中,您通常会尽量避免在调用 onDestroy() 后持有与活动上下文相关的对象引用的情况。
【讨论】:
所以我可以在我的界面中放置一个方法来检查活动是否正在运行,是吗? 是的,在接口方法中使用isFinishing()【参考方案2】:我认为你应该向你的活动发送意图(如果你需要,设置你的活动 singleTop 或 singleTask 或 SingleIntance )而不是接口。
【讨论】:
我必须使用 startActivity() 向活动发送意图,但如果活动打开,我想更新活动,否则显示通知或什么都不显示以上是关于销毁后调用活动方法的主要内容,如果未能解决你的问题,请参考以下文章