android数据保存加载相关问题

假如在当前的Activity上有音频数据,通过back返回或者把应用退出后,这个数据如何保存?再进入该Activity后,该数据如何重新加载?

在当前Activity上有音频数据时,可以在Activity的生命周期方法onPause()中将数据保存到本地存储中,例如使用SharedPreferences或者文件存储等方式。当再次进入该Activity时,在生命周期方法onResume()中读取保存的数据并重新加载。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/193535
  • 这篇博客你也可以参考下:android一个activity不能完全显示数据内容如何让activity上下滚动?
  • 你还可以看下android参考手册中的 android Activity 一项活动是用户可以做的单一、集中的事情。
  • 除此之外, 这篇博客: Android学习笔记:活动(Activity)中的 四、Activity之间如何进行数据回传? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • Activity提供了一个startActivityForResult(Intent intent, int requestCode) 方法,该方法也用于启动Activity,并且这个方法可以在当前Activity销毁时返回一个结果给上一个Activity,实现数据回传功能。在实际开发中这种功能很常见,如发朋友圈时,进入图库选择好照片后,会返回到发表状态页面并带回所选的图片信息。

    在一个Activity中很可能调用startActivityForResult()方法启动多个不同的Activity,每一个Activity返回的数据都会回调onActivityResult()这个方法,因此,首先要做的就是检查requestCode的值来判断数据来源,确定数据是从哪一个Activity返回的,然后通过resultCode的值来判断数据处理结果是否成功,最后从data中取出数据,这样就完成了Activity数据返回的功能。


  • 您还可以看一下 刘刚老师的Android程序设计课程中的 Activity简介和使用小节, 巩固相关知识点

持久化存储,对于音频文件来说考虑进行SD卡或者应用内文件存储,千万别存储到系统文件那边去,例如图库这种。
比如ffmpeg解封装视频,传递给它一个URL,你在图库的文件拿到URL也不行,你没权限直接操作这个文件,只能通过内容共享者获取到它的流,将文件写到SD卡或者应用内文件目录,之后再将URL丢给FFmpeg。
同理,看看你用什么播放,用opensl el还是用mediaRecoder,它接收什么类型的音频文件,一般是RAW或者assets或者我说的自己能完全读写权限下的目录URL。