gpt4 book ai didi

android - 通过提供一个扩展 Thread 并覆盖其 run() 方法的新类来实现 Thread

转载 作者:行者123 更新时间:2023-11-30 04:38:30 25 4
gpt4 key购买 nike

通过提供一个扩展 Thread 的新类并覆盖其 run() 方法来实现 Thread 对我来说是新的。我整天都在努力让它工作。这是我的代码:

/*
* 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();
}

我在我的 LocalService onCreate() 中调用 startThread() 但没有任何反应。我究竟做错了什么?我期待 localHandler() 被调用两次:一次是在 passHandlerToThread() 中,另一次是在 run() 中。

最佳答案

做这样的事情:

private final Handler handler = new Handler();
// toast runnables
final Runnable updateTwitterNotification = new Runnable() {
@Override
public void run() {
dismissProgressSpinner();
Toast.makeText(getBaseContext(), "Tweet sent!", Toast.LENGTH_LONG).show();
}
};

final Runnable updateCreateError = new Runnable() {
@Override
public void run() {
Toast.makeText(getBaseContext(), "Tweet error!", Toast.LENGTH_LONG).show();
}
};

postMessageInThread();


//implementation:
private void postMessageInThread() {
Thread t = new Thread() {
@Override
public void run() {

try {
connectToTwitterService() // or whatever
handler.post(updateTwitterNotification);
} catch (Exception ex) {
Log.e(TAG, "Error sending msg", ex);
handler.post(updateCreateError);
}
}
};
t.start();
}

关于android - 通过提供一个扩展 Thread 并覆盖其 run() 方法的新类来实现 Thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6420097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com