防止调用onCreate倾斜,以及运行活动的时间测量。

时间:2012-08-29 00:24:42

标签: java android android-orientation

您好,并提前感谢您的时间和关注。 我实际上有两个问题,我不太确定构建一个Android应用程序。我相信非常基本的东西:

1)我的应用程序完全处于水平模式,例如AngryBirds。当它开始时,用户指出他应该像那样拿着手机,如果他还没有。这是在所有活动的清单中设置并且工作正常。但有没有办法防止物理设备倾斜再次调用onCreate?我可以覆盖它的方法或其他什么?我问的原因是,因为我有一些ButtonViews,你点击它们后,改变他们的图片。我使用onRetainNonConfigurationInstance()来保存那些ImageButtons的数组,我甚至标记用ImageButton setTag()和getTag()方法更改的那些,所以当因为设备倾斜而调用onCreate时,它从getLastNonConfigurationInstance获取保存的数组(),但我一直试图让它工作很长一段时间,我只是无法做到正确。设备倾斜后(我实际上是使用模拟器,所以它是Ctrl + F11,但我相信它也会发生在设备上)所有的ImageButton都会丢失它们的图片。长话短说 - 是否有更好的方法来做到这一点你可以推荐或防止倾斜做任何事情或更好吗?

2)了解用户在屏幕上显示的秒数的最佳方法是什么?我尝试通过SystemClock.currentThreadTimeMillis()使用两个long,如下所示:获取onCreate的开始时间,以及我调用的方法的结束时间,以便在startActivity之前移动到第二个intent。但我认为因为它们是从不同的线程调用的,所以终点 - 起点不正确。确保SystemClock.currentThreadTimeMillis()的两个方法都是从同一个线程调用的方法是什么,我正在停止活动的主线程?有没有更好的方法解决这个问题?

再次感谢。

3 个答案:

答案 0 :(得分:2)

  1. 您正在处理方向更改的权利。请参阅此链接http://developer.android.com/guide/topics/resources/runtime-changes.html。这将帮助您实现目标。

  2. 好的方法是计算onResume和onPause之间的时间。如果您正在恢复活动,则不会一直调用OnCreate。

答案 1 :(得分:0)

1)您可以尝试将属性android:configChanges="orientation"添加到清单文件中的活动中。当我的动态Action Bar选项卡在旋转屏幕时搞砸了,它对我有用。

答案 2 :(得分:0)

  1. 您需要在Android清单中为每个活动指定方向,然后才会调用onCreate。 android:screenOrientation查看http://developer.android.com/guide/topics/manifest/activity-element.html
  2. 用户从onResume开始查看您的活动并与之互动,并以onPause结束。其他时间它不保证用户实际看到并可以点击活动中的某些内容。 System.getCurrentMillis()就足够了。
相关问题