viewWillDisappear

viewWillAppear: 
Called when the view is about to made visible. Default doesnothing
视图即将可见时调用。默认情况下不执行任何操作
viewDidAppear: 
Called when the view has been fully transitioned onto the screen.Default does nothing
视图已完全过渡到屏幕上时调用
viewWillDisappear:
Called when the view is dismissed, covered or otherwise hidden.Default does nothing
视图被驳回时调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作



viewWillDisappear

在屏幕变黑锁屏后,并不会触发这个事件


### 正确销毁或释放高德地图实例以避免内存泄漏 对于高德地图 SDK,在 Android 和 iOS 平台上正确管理地图生命周期至关重要,这有助于防止潜在的内存泄漏并优化应用性能。 #### Android 平台上的处理方式 在 Android 应用中,当不再需要显示地图时应当调用 `onDestroy()` 方法来清理资源。具体来说: - 当 Activity 或 Fragment 被销毁时,应该同步执行 AMap 对象的 `destroy()` 函数[^3]。 ```java @Override protected void onDestroy() { super.onDestroy(); if (mAMap != null) { mMapView.onDestroy(); // 销毁地图视图 mAMap = null; // 将引用置为空 } } ``` 此外还需要注意重写其他生命周期函数如 `onPause()` 和 `onResume()` 来暂停/恢复地图服务以及保存状态信息。 #### iOS 平台上的处理方式 针对 iOS 环境下使用 MAMapView 控件的情况,则需遵循以下建议操作: - 在 viewWillDisappear 或 dealloc 方法里移除所有观察者,并停止更新位置等耗电行为; - 设置 mapview.delegate 属性为 nil 以便解除循环引用关系; - 使用 weak 关键字声明代理变量从而减少强引用带来的风险; ```objc - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [_mapView setDelegate:nil]; // 解绑委托 [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (void)dealloc { _locationManager.delegate = nil; [_mapView removeFromSuperview]; _mapView = nil; } ``` 通过上述措施可以在很大程度上规避由于不当关闭地图组件所造成的内存溢出问题[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值