package org.android.textbook.lesson4.handlersample; import java.lang.ref.WeakReference; import org.android.textbook.lesson4.handlersample.WorkerThread.WorkerThreadListener; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; import android.widget.TextView; public class HandlerSampleActivity extends Activity { private CountHandler mHandler; private WorkerThread mWorkerThread; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_handler_sample); TextView textView = (TextView) findViewById(R.id.textView); // �n���h���[�̐��� mHandler = new CountHandler(textView); // �X���b�h�̃C���X�^���X���� } @Override protected void onResume() { super.onResume(); if (mWorkerThread == null) { mWorkerThread = new WorkerThread(mWorkerThreadListener); mWorkerThread.start(); } } @Override protected void onPause() { super.onPause(); if (mWorkerThread != null) { mWorkerThread.stopThread(); mWorkerThread = null; } } private static class CountHandler extends Handler { private int counter; private WeakReference<TextView> mTextWeakRef; public CountHandler(TextView textView) { mTextWeakRef = new WeakReference<TextView>(textView); } public static final int MSG_COUNT_UP = 0; @Override public void handleMessage(Message msg) { TextView text = mTextWeakRef.get(); if (text == null) { return; } switch (msg.what) { case MSG_COUNT_UP: counter++; text.setText(String.valueOf(counter)); break; default: break; } } }; private WorkerThreadListener mWorkerThreadListener = new WorkerThreadListener() { @Override public void onEventFromWorkerThread() { // ���̃��\�b�h��WorkerThread�N���X�̃X���b�h����Ă΂�܂��B // UI�X���b�h�̃n���h���[�Ƀ��b�Z�[�W�𑗐M���܂��B Message msgUp = mHandler.obtainMessage(CountHandler.MSG_COUNT_UP); mHandler.sendMessage(msgUp); } }; }