0

私はアプリを作成していますが、アクションを遅らせるためにコードに時間遅延を追加したいと考えています。遅延をミリ単位で設定できるものはありますか? 助けてください。

私は次のようなことをしたい:

for(int i=1;i<100;i++){
     Delay(1000); // I want to add a delay so that this wont happend instanlty
     Matrix matrix=new Matrix();
     matrix.postRotate((float) angle2,width, height);
     image.setImageMatrix(matrix);

Thread.sleep() を呼び出すと ANR が発生します Android の Visual Basic のタイマーのようなものはありますか? vb のタイマーは、メイン プログラムとは別に実行される要素であり、ユーザーが設定した頻度でイベントを発生させます。

4

3 に答える 3

3

別のスレッドのThread.sleepがそれを行います。

他の目的でAsyncTaskを使用していない場合は、代わりにそれを使用してください。それはあなたのために物事を簡素化します。AsyncTask はスレッドプールを利用するので、自分でスレッドを作成することについて心配する必要はありません。

UI スレッドでスリープ状態になるため、ボタンまたは同等のイベント コールバックでスリープ状態にならないようにしてください。これにより、アプリが応答しなくなり、動作が遅くなります。他のスレッドでのみスリープし、UI を呼び出して更新します。

更新された質問に基づいて編集:

UI でアニメーションを実行しているようです。長時間実行されるプロセスのように見えるため、これには別のスレッドが最適です。

于 2013-08-19T14:34:00.483 に答える
1

スレッド全体を保持したい場合は、スリープします。ただし、アプリ/電話の UI がフリーズするため、メイン スレッドでこれを実行しないでください。

将来何かをしたいが、アプリを停止したくない場合は、数秒間、遅延メッセージを Handler に投稿できます。

もっと遠い将来に何かをしたい場合は、AlarmManager を介してアラームを設定します。

于 2013-08-19T14:34:19.910 に答える
0

Thread の Javadoc を参照してください: http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#sleep%28long%29

于 2013-08-19T14:33:09.797 に答える