コード import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.widget.TextView; public class MainActivity extends Activity implements Runnable{ private Handler mHandler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mHandler.postDelayed(this, 1000); } public void run() { TextView text = (TextView) findViewById(R.id.text1); Integer count = Integer.valueOf(text.getText().toString()); count += 1; text.setText(count.toString()); mHandler.postDelayed(this, 1000); if(count >= 10){ mHandler.removeCallbacks(this); } } }
上のプログラムは
「0から1秒ごとに数字をカウントしていき、10になると終了する」
というプログラムを調べながら自分なりに作ってみたものです。
上のプログラムで思い通りの動作はするのですが、なぜこのプログラムできちんと動作できているのかがわかりません。
①setContentView(R.layout.activity_main);の下にあるmHandler.postDelayed(this, 1000);は1秒遅らせる動作だと思うのですが、この記述を消すと0からカウントしなくなりました。
runメソッドに同じ記述があるのに、なぜここにも書かないといけないのでしょうか?
②mHandler.postDelayed(this, 1000);のthisは何を示すのでしょうか?
Runnableに関係しているとは思うのですが
③10になるまでカウントしているということはrunメソッドをループしていることになると思うのですが、for文のような繰り返しの記述はどれになるのでしょうか?
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/26 01:09