1

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

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

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

再次感谢。

4

3 回答 3

2
  1. 您正在做正确的处理方向变化。请参考此链接http://developer.android.com/guide/topics/resources/runtime-changes.html。这将帮助您使其正常工作。

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

于 2012-08-29T00:33:31.120 回答
0

1)您可以尝试将属性添加android:configChanges="orientation"到清单文件中的活动中。当我的动态操作栏标签在屏幕旋转时弄乱时,它对我有用。

于 2012-08-29T00:30:51.270 回答
0
  1. 您需要在 android manifest 中为每个活动指定方向,然后它不会调用 onCreate。android:screenOrientation看看http://developer.android.com/guide/topics/manifest/activity-element.html
  2. 用户从 onResume 开始查看并与您的活动进行交互,并在 onPause 结束。其他时候,它不能保证用户实际看到并可以点击活动中的某些内容。System.getCurrentMillis() 已经足够好了。
于 2012-08-29T00:33:26.713 回答