我google了很多,但现在我决定问..
我的活动只做一件简单的事情——它使用 AsyncTask 从 Internet 下载图片。
但是有很多问题,我不确定,如何解决..
1.] AsyncTask 下载图片后用户旋转屏幕.. 我应该如何处理这个屏幕旋转?活动重新创建后在哪里可以临时保存图片?
我不想锁定屏幕方向(android:screenOrientation="landscape")或自己处理它(android:configChanges="orientation")..
我只是想把图片保存在某个地方..
我知道可以通过使用onRetainNonConfigurationInstance()和getLastNonConfigurationInstance()来完成,但现在两者都已弃用。Bundle 不适用于图像,因为它是为字符串(可序列化)数据制作的。我可以将图片保存到数据库或某处的文件,但这是不必要的。我在某处读到,它可以由 Loader 完成,但我不知道如何?可能吗?
2.] 用户在AsyncTask 下载图片时旋转屏幕。
我希望 AsyncTask 继续下载。下载完成后,AsyncTask 应该将图像保存到 onPostExecute 方法中的新(重新创建)活动。
我认为如果 AsyncTask 是活动的内部类,它可以工作..?但是如果我不希望它成为内部类,我必须保存对活动的引用,例如在变量中。但是,如果我将 Activity 的引用作为 AsyncTask 的构造函数的参数发送,并且在屏幕旋转后重新创建 Activity,AsyncTask 中的变量确实引用了原始 Activity,因此新的不知道下载的图片,它必须重新开始下载..
还是 AsyncTask 是下载图像的错误选择?我应该使用其他东西吗?服务?
那么..如何解决这些问题呢?我相信很多应用程序开发人员也必须解决这个问题。但对我来说这都是希腊语:(