postDelayedとメインスレッドで実行される他のコードを使用するコードがあります。私はそれを数回実行し、常に次のような出力を見た:Androidで実際に実行されるpostDelayedにランナビがいつ掲載されますか?
7月13日14:22:18.511 15376から15376/sample1.com.sample_1のD/MainActivityを: = 0
私を... 22:..
07から13 14 18.601 15376から15376/sample1.com.sample_1のD/MainActivity: onResume 7月13日14:22:18.601 15376から15376/sample1.com.sample_1 D/MainActivity :私のよう
をpostDelayedログ出力から見ると、私の遅延は50ミリ秒であることは関係ありません。メッセージ「postDelayed」は、約100ミリ秒後に入力されます(601-511 = 90)。 UIスレッドのメッセージキューの最後に遅延ランナブルが追加されたようです。しかし、とにかく、正確にpostDelayedがいつ入力されたかについての保証はありますか? forループの途中で型指定できますか?
package sample1.com.sample_1;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Log.d("MainActivity", "postDelayed");
}
}, 10);
for (int i = 0; i < 10000; i++) {
Log.d("MainActivity", "i = " + i);
}
}
@Override
protected void onResume() {
Log.d("MainActivity", "onResume");
super.onResume();
}
}
AndroidではメインスレッドのUI操作が制限されています。 – Harlan
@ハロン、私はあなたを理解しているか分からない。 –