1

こんにちは、お時間とご関心をお寄せいただきありがとうございます。私は実際にAndroidアプリの構築についてよくわからない2つの質問があります。私が信じているかなり基本的なもの:

1) 私のアプリは、たとえば AngryBirds のように、完全に水平モードになっています。それが始まると、ユーザーは電話をそのように持つ必要があることを理解します。そして、それはすべてのアクティビティのマニフェストで設定され、正常に機能します。しかし、物理デバイスが傾いて onCreate を再度呼び出すのを防ぐ方法はありますか? メソッドなどをオーバーライドできますか?私が尋ねている理由は、クリックした後に画像を変更するいくつかの ButtonViews があるためです。これらの ImageButton の配列を保存するために onRetainNonConfigurationInstance() を使用しています。また、ImageButton の setTag() および getTag() メソッドで変更されたものをマークすることもできるため、デバイスの傾きのために onCreate が呼び出されると、getLastNonConfigurationInstance から保存された配列が取得されます。 () 、しかし、私はかなり長い間それを機能させようとしてきました。正しく理解してください。デバイスが傾いた後(実際にはエミュレータを使用しているのでCtrl + F11ですが、デバイスでも発生すると思います)、すべてのImageButtonsが写真を失います..簡単に言えば、これを行うより良い方法はありますかチルトが何かをすることをお勧めできますか、それを妨げていますか?

2) ユーザーが画面に何秒滞在しているかを知る最良の方法は何ですか? SystemClock.currentThreadTimeMillis() を介して取得した 2 つの long を次のように使用しようとしました: 開始時刻 onCreate を取得し、呼び出すメソッドの終了時刻を取得して、startActivity の直前に 2 番目のインテントに移動します。しかし、それらは異なるスレッドから呼び出されるため、終点-開始点が正しくないと思います。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

android:configChanges="orientation"1)マニフェスト ファイルのアクティビティにプロパティを追加してみてください。画面の回転時に動的なアクションバーのタブが台無しになったとき、それは私にとってはうまくいきました。

于 2012-08-29T00:30:51.270 に答える
0
  1. アクティビティごとに Android マニフェストで方​​向を指定する必要があります。その場合、onCreate は呼び出されません。http://developer.android.com/guide/topics/manifest/activity-element.htmlandroid:screenOrientationを見てください
  2. ユーザーは、onResume から開始して onPause で終了するアクティビティを表示して操作します。それ以外の場合は、ユーザーがアクティビティ内の何かを実際に見てクリックできることを保証するものではありません。System.getCurrentMillis() で十分です。
于 2012-08-29T00:33:26.713 に答える