有一段代碼,我使用postDelayed和一些其他代碼在主線程上執行。我跑了幾次並總是看到下面的輸出:什麼時候發佈在postDelayed中的runnables實際上在Android上執行?
07-13 14:22:18.511 15376-15376/sample1.com.sample_1 d/MainActivity:ⅰ = 0
.. ..
07-13 14:22:18.601 15376-15376/sample1.com.sample_1 d/MainActivity: 的onResume 07-13 14:22:18.601 15376-15376/sample1.com.sample_1 d/MainActivity :postDelayed
因爲我從日誌輸出中看到,我的延遲是50毫秒並不重要。在大約100 ms(601 - 511 = 90)後鍵入消息「postDelayed」。看起來延遲的runnable被添加到我的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
@哈龍,我不確定我是否理解你。 –