時間を遅らす処理を複数行うのにHandlerと複数のRunnableを使っています。質問はHandlerのインスタンスは各Runnable毎に必要なのでしょうか?それともHandlerのインスタンスひとつで複数のRunnableを設定するべきなのでしょうか?試しにHandlerを各Runnable毎にしても、ひとつで複数のRunnableを設定してもどちらも問題なく思った通りの挙動をしますが設計上どちらがベターなのかまた理由があるようでしたら教えて下さい。
各Runnable毎の場合
public
1 2 private Handler mHandler = new Handler(); 3 private Handler sHandler = new Handler(); 4 5 private Runnable updateText; 6 private Runnable subupdateText; 7 8 @Override 9 protected void onCreate(final Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); 11 setContentView(R.layout.activity_main); 12 13 updateText = new Runnable() { 14 @Override 15 public void run() { 16 TextView text = (TextView)findViewById(R.id.count); 17 Integer count = Integer.valueOf(text.getText().toString()); 18 count++; 19 text.setText(count.toString()); 20 mHandler.removeCallbacks(updateText); 21 mHandler.postDelayed(updateText, 1000); 22 } 23 }; 24 mHandler.postDelayed(updateText, 1000); 25 26 subupdateText = new Runnable() { 27 @Override 28 public void run() { 29 TextView subText = (TextView)findViewById(R.id.subcount); 30 Integer subcount = Integer.valueOf(subText.getText().toString()); 31 subcount++; 32 subText.setText(subcount.toString()); 33 sHandler.removeCallbacks(subupdateText); 34 sHandler.postDelayed(subupdateText, 5000); 35 } 36 }; 37 sHandler.postDelayed(subupdateText, 5000); 38 } 39}
ひとつで複数のRunnableの場合
public
1 2 private Handler mHandler = new Handler(); 3 4 private Runnable updateText; 5 private Runnable subupdateText; 6 7 @Override 8 protected void onCreate(final Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 setContentView(R.layout.activity_main); 11 12 updateText = new Runnable() { 13 @Override 14 public void run() { 15 TextView text = (TextView)findViewById(R.id.count); 16 Integer count = Integer.valueOf(text.getText().toString()); 17 count++; 18 text.setText(count.toString()); 19 mHandler.removeCallbacks(updateText); 20 mHandler.postDelayed(updateText, 1000); 21 } 22 }; 23 mHandler.postDelayed(updateText, 1000); 24 25 subupdateText = new Runnable() { 26 @Override 27 public void run() { 28 TextView subText = (TextView)findViewById(R.id.subcount); 29 Integer subcount = Integer.valueOf(subText.getText().toString()); 30 subcount++; 31 subText.setText(subcount.toString()); 32 mHandler.removeCallbacks(subupdateText); 33 mHandler.postDelayed(subupdateText, 5000); 34 } 35 }; 36 mHandler.postDelayed(subupdateText, 5000); 37 } 38} 39
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/01 00:28