在Android中清理资源的最佳方法是什么?

问题描述 投票:0回答:1

我正在使用ExoPlayer像Spotify一样构建应用程序。我会在歌曲开始播放时启动播放器通知,即使将应用置于后台也应开始播放。因此,当用户有意从Ram清除应用程序但onDestory()不如stated here可靠时,我需要release播放器并保存最后播放的歌曲。因此,我认为在自定义Application中的onActivityDestroyed()中执行资源清理,但这也失败了。

override fun onActivityDestroyed(activity: Activity?) {
                val activityName = activity!!.localClassName
                Log.d(TAG, "onActivityDestroyed: activity name ==> $activityName")

                val musicPlayerDAO =
                    MusicPlayerDatabase.getDatabase(applicationContext).musicPlayerDao()
                val repository = Repository(musicPlayerDAO)

                val job = Job()
                CoroutineScope(Dispatchers.IO + job).launch {
                    repository.insertLastPlayedSong(LastPlayedSongEntity("Dummy title", 3000))                    
                }

                Log.d(TAG, "onActivityDestroyed: Just after the co-routine")
            }

仅第一个日志在这里执行。在这种情况下,释放资源的最佳方法是什么?

android kotlin exoplayer2.x
1个回答
0
投票

您应该释放onStop()中的资源,当活动进入后台时它会停止但不会被破坏(除非系统终止该活动的托管进程)。如果释放onDestroy()中的资源,则默认情况下不会调用活动进入后台,活动将在停止状态下保留这些资源,从而导致您的应用在后台状态下消耗更多的资源。

© www.soinside.com 2019 - 2024. All rights reserved.