private void runOnMainThread() {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// Do something
ottoBus.post(new MyObjectEvent(mMyObject));
// End do something
mMyObject = null;
}
});
}
InputStream stream = null;
InputStreamReader reader = null;
BufferedReader bufferedReader = null;
String data = "";
try {
stream = mSocket.getInputStream();
byte[] bytes = new byte[20];
int numRead = 0;
while ((numRead = stream.read(bytes)) >= 0) {
String s = new String(bytes, 0, numRead);
if (mMyObject != null) {
fillData(s); // Can cause NPE
} else {
mMyObject = new MyObject();
fillData(s);
}
// This should be synchronised call
runOnMainThread();
多谢了。
static final object uiActionMonitor = new Object();
transient boolean uiCompleted;
void network_thread_run() {
int numRead = 0;
while ((numRead = stream.read(bytes)) >= 0) {
String s = new String(bytes, 0, numRead);
// This should be synchronised call
uiCompleted = false;
runOnMainThread();
synchronized(uiActionMonitor) { //<---------- wait for UI to complete
while (!uiCompleted) {
uiActionMonitor.wait();
}
}
}
private void runOnMainThread() {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// Do something
// End do something
uiCompleted = true;
synchronized(uiActionMonitor) { //<---------- release networking thread
uiActionMonitor.notifyAll();
}
}
});
}
我必须承认我不明白为什么你需要阻止你的网络线程而UI线程正在处理你的消息...
我想让一些代码在后台持续运行。我不想在服务中这样做。还有其他可能的方法吗? 我曾尝试在我的活动中调用线程类,但我的活动在后台保留了一段时间,然后就停止了。线程类也停止工作。
问题内容: 我想从主Java程序中产生一个Java线程,并且该线程应单独执行而不会干扰主程序。应该是这样的: 用户启动的主程序 做一些业务工作,应该创建一个可以处理后台进程的新线程 一旦创建线程,主程序就不要等到生成的线程完成。实际上,它应该是无缝的。 问题答案: 一种简单的方法是自己手动生成线程: 另外,如果您需要产生多个线程或需要重复执行,则可以使用更高级别的并发API和执行程序服务:
问题内容: 我想在后台线程中运行一些Runnable。我想使用Handler,因为它便于延迟。我的意思是 凡 可运行 应当运行 后台 线程。是否可以创建这样的处理程序?是否在某个地方有“背景” Looper,或者该如何创建? PS我知道如何使用自定义类扩展Thread,但是比处理程序方式需要更多的编码工作。因此,请不要发布其他解决方案或类似的内容 如果Handler能以“干净”的方式做到这一点,我
我想在后台线程中运行一些Runnable。我想使用Handler,因为它方便延迟。我的意思是 runnable应该在后台线程中运行。有可能创造这样的处理器吗?某个地方有没有“背景”Looper或者我怎么才能创建它? 附言:我知道如何使用自定义类扩展Thread来做到这一点,但它需要更多的编码工作,而不是以处理程序的方式进行。因此,请不要发布其他解决方案或类似内容 我只是想知道汉德勒是否能以“干净”
我对Python和Django相当陌生,所以请让我知道是否有更好的方法来做到这一点。我想做的是拥有每个设备(从模型继承。Model)启动一个长时间运行的后台线程,该线程不断检查该设备的运行状况。然而,当我运行代码时,它似乎不像守护进程那样执行,因为服务器缓慢且不断超时。这个后台线程将(在大多数情况下)运行程序的生命周期。 下面是我代码的简化版本: 这似乎是线程的一个非常简单的用法,但每次我寻找解决
在一个android服务中,我创建了用于执行一些后台任务的线程。 我遇到一个情况,线程需要在主线程的消息队列上发布特定任务,例如。 有没有方法获取主线程的并从我的另一个线程向它发布/?