旋转时刷新Android活动
作者:互联网
我是一位经验丰富的.NET开发人员,但这是我的第一个Android应用程序,真让我发疯!
这是一个倒数计时器,可以正常工作,但是当您旋转屏幕时,它会重新初始化活动,该活动会清零并停止倒数.
这是我尝试过的;
我摆脱了CountDownTimer对象,而是创建了活动内部的类,该类扩展了AsyncTask,因此它在单独的线程上运行…无需更改.
我认为这是一个内部类,正在使用该活动进行重新初始化.
这是我接下来要尝试的;
我把这门课当作外部课程.该活动将其上下文传递给该类和onProgressUpdate& onPostExecute在上下文上运行公共功能以更新活动的UI.
同样,在您旋转它之前,它仍然可以正常工作… Aaaargh!
但是,我发现异步类仍在运行,但UI并未更改,因为(我认为)该活动现在具有与异步类所引用的上下文不同的上下文.
这就是我的所在.每种解决方案都解决了一个问题,创建另一个.
我需要以某种方式保持上下文还是我开始追逐自己的尾巴?
任何帮助将不胜感激!
助教.
巴里
解决方法:
However, I discovered that the async class is still running but the UI doesn’t change because (I think) the activity now has a different context to the one the async class has reference to.
好猜.如果要保留计算的数据,则必须处理活动的生命周期,因为每当旋转设备时,都会重新创建活动,因此将调用onCreate()而不保存以前的计算数据.您必须重写onSaveInstanceState(Bundle savedInstanceState)和onRestoreInstanceState()才能保存计算.看一下Activity’s LifeCycle documentation和Reto Meier’s answer,我认为它将解决您的问题.
标签:android-context,android-asynctask,android-activity,android 来源: https://codeday.me/bug/20191028/1953830.html