Реализация Thread путем предоставления нового класса, расширяющего Thread, и переопределения его метода run () - новинка для меня.Я пытался весь день заставить его работать.Вот мой код:
/*
* see http://developer.android.com/reference/java/lang/Thread.html
*/
class threadClass extends Thread {
private Handler mHandler;
private Message mMsg;
// constructor
public threadClass(Handler handler, Message msg) {
// do something like save the Handler reference
mHandler = handler;
mMsg = msg;
}
@Override
public void run() {
// do some background processing, call the Handler?
mHandler.sendMessage(mMsg);
}
}
public Thread passHandlerToThread(Handler handler) {
handler.sendEmptyMessage(10);
Message msg = Message.obtain();
msg.what = 10;
Thread thread = new threadClass(handler, msg);
return thread;
}
private Handler localHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
int what = msg.what;
if (what == 10) Log.i("localHandler", "what: " + what);
}
};
public void startThread() {
Thread thread = passHandlerToThread(localHandler);
thread.start();
}
Я вызываю startThread () в моем LocalService onCreate (), но ничего не происходит.Что я делаю неправильно?Я ожидал, что localHandler () будет вызван дважды: один раз в passHandlerToThread () и снова в run ().