避免内存泄漏的一种方法是在应用程序中仅保留对Activity上下文的弱引用。在使用Android In-app更新库时,如果应用程序使用了库提供的默认弹出框,则需要在更新完成后取消对Activity引用。以下是示例代码:
class MainActivity : AppCompatActivity() {
private lateinit var appUpdateManager: AppUpdateManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
appUpdateManager = AppUpdateManagerFactory.create(applicationContext)
}
override fun onStart() {
super.onStart()
appUpdateManager.appUpdateInfo.addOnSuccessListener { appUpdateInfo ->
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
&& appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
// 显示默认弹出框
startImmediateUpdate(appUpdateInfo)
}
}
}
private fun startImmediateUpdate(appUpdateInfo: AppUpdateInfo) {
appUpdateManager.startUpdateFlowForResult(
appUpdateInfo,
AppUpdateType.IMMEDIATE,
this, // 传入Activity上下文
123) // 任意的请求代码
}
override fun onDestroy() {
super.onDestroy()
// 取消对Activity的引用,避免内存泄漏
appUpdateManager.unregisterListener()
}
}