新しいレイアウトファイルactivity_main.xml
<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> < のLinearLayout のxmlns:アンドロイド= "http://schemas.android.com/apk/res/android" のxmlns:アプリ= "http://schemas.android .COM / APK / RES-オート" のxmlns:ツール= "http://schemas.android.com/tools" のandroid:layout_width = "match_parent" のandroid:layout_height = "match_parent" ツール:コンテキスト="。MainActivity」> < ボタンは アンドロイド:ID = "@ + ID / btnOk" アンドロイド:layout_width = "wrap_content" アンドロイドを: アンドロイド:TEXTSIZE = "15dp" /> < TextViewの アンドロイド:ID = "@ + ID / tvtimeを" アンドロイド:layout_width = "wrap_content" のandroid:layout_height = "wrap_content" アンドロイド:TEXTSIZE = "15dp" /> </ のLinearLayout >
新MainActivity.java
パッケージcom.example.administrator.timer。 輸入android.os.Bundle; 輸入android.os.Handler; 輸入android.support.v7.app.AppCompatActivity; 輸入android.view.View; 輸入android.widget.Button; 輸入android.widget.TextView; パブリック クラス MainActivityは拡張 AppCompatActivity 実装View.OnClickListener { プライベートボタンbtnOkを。 民間のTextView tvtimeを。 プライベート ブール BSTART = 偽; プライベートハンドラmHander = 新しいですハンドラ(); プライベート int型 MCOUNT = 0 ; プライベート RunnableをmCounter = 新しいRunnableを(){ @Override 公共 のボイドの実行(){ MCOUNT ++ ; tvTime.setText( "当前计数值:" + MCOUNT)。 mHander.postDelayed(これ、1000年); } }。 @Override 保護された ボイドのonCreate(バンドルsavedInstanceState){ スーパー.onCreate(savedInstanceState)。 setContentView(R.layout.activity_main)。 initView(); } プライベート ボイドinitView(){ btnOk = (ボタン)findViewById(R.id.btnOk)。 tvtimeを = (のTextView)findViewById(R.id.tvTime)。 btnOk.setOnClickListener(この); } @Override 公共 ボイドのonClick(ビューV){ スイッチ(v.getId()){ ケースR.id.btnOk: もし(BSTART == 偽){ btnOk.setText( "停止计时" )。 mHander.post(mCounter)。 } 他{ btnOk.setText("開始時刻" ); mHander.removeCallbacks(mCounter); } BSTART!= BSTART; BREAK ; } } }
髪は、多くの場合、ハンドラを使用してタスクを開始します。以下は、ハンドラのRunnableタスクの説明を治療する一般的な方法です。
●ポスト:スタートのRunnableタスクすぐ。
●postDelayed:いくつかのRunnableタスクの遅延の後に開始する時間。
●postAtTime:指定した時刻に開始するためのRunnableタスク。
●removeCallbacks:指定されたRunnableタスクを削除します。