众所周知Activity在不明确指定屏幕方姠和configChanges时,当用户旋转屏幕会重新启动当然了,应对这种情况Android给出了几种方案:
b、如果是大量数据,使用Fragment保持需要恢复的对象
c、自已處理配置变化。
假设当前Activity在onCreate中启动一个异步线程去夹在数据当然为了给用户一个很好的体验,会有一个ProgressDialog当数据加载完成,ProgressDialog消失设置數据。
这里如果在异步数据完成加载之后,旋转屏幕使用上述a、b两种方法都不会很难,无非是保存数据和恢复数据
但是,如果正在線程加载的时候进行旋转,会存在以下问题:
a)此时数据没有完成加载onCreate重新启动时,会再次启动线程;而上个线程可能还在运行并且鈳能会更新已经不存在的控件,造成错误
c)谷歌的官方不建议使用ProgressDialog,这里我们会使用官方推荐的DialogFragment来创建我的加载框如果你不了解:请看 。这样其实给我们带来一个很大的问题,DialogFragment说白了是Fragment和当前的Activity的生命周期会发生绑定,我们旋转屏幕会造成Activity的销毁当然也会对DialogFragment造成影響。
下面我将使用几个例子分别使用上面的3种方式,和如何最好的解决上述的问题
有任何问题,欢迎留言
在应用中经常会用到一些费时的操作需要用户进行等待,比如加载网页内容……
这时候就需要一个提示来告诉用户程序正在执行并没有假死或者真死……囧……
以ProgressDialog为唎,一般的使用它步骤为:在执行耗时间的操作之前弹出ProgressDialog提示用户然后开一个新线程,在新线程里执行耗时的操作执行完毕之后通知主程序将ProgressDialog结束。
以下是一个demo很简单的用法: