gpt4 book ai didi

java - 如何将消息发送到静态处理程序?

转载 作者:行者123 更新时间:2023-11-29 21:03:44 24 4
gpt4 key购买 nike

我不得不声明一个静态处理程序,因为一些 Java 废话和泄漏。

static class ParsingCompleteHandler extends Handler {
private final WeakReference<BackupActivity> mTargetActivity;
ParsingCompleteHandler(BackupActivity targetActivity) {
mTargetActivity = new WeakReference<BackupActivity>(targetActivity);
}

@Override
public void handleMessage(Message msg) {
BackupActivity targetActivity = mTargetActivity.get();
targetActivity.updateDialog();
}
};

在代码的其他地方(在可运行的内部)我试图将 sendEmptyMessage() 发送给这个处理程序

    Runnable runnable = new Runnable() {
@Override
public void run() {
lastBackupDataObject = getBackupDataObjectFromFile(file);
parsingCompleteHandler.sendEmptyMessage(0);
}
};
Thread parsingThread = new Thread(runnable);
parsingThread.start();

但由于 sendEmptyMessage() 方法不是静态的(现在的处理程序是静态的),显然我不能这样做。我需要向处理程序发送一条消息,因为这就是它的用途。我该怎么做?

最佳答案

您可以通过将您的处理程序对象作为类全局对象来执行此操作,而不是调用此消息,这应该可以工作

eg.

public class SomeClass{

ParsingCompleteHandler parsingCompleteHandler;


static class ParsingCompleteHandler extends Handler {
private final WeakReference<BackupActivity> mTargetActivity;
ParsingCompleteHandler(BackupActivity targetActivity) {
mTargetActivity = new WeakReference<BackupActivity>(targetActivity);
}

@Override
public void handleMessage(Message msg) {
BackupActivity targetActivity = mTargetActivity.get();
targetActivity.updateDialog();
}
};

比做

    Runnable runnable = new Runnable() {
@Override
public void run() {
lastBackupDataObject = getBackupDataObjectFromFile(file);
parsingCompleteHandler.sendEmptyMessage(0);
}
};
Thread parsingThread = new Thread(runnable);
parsingThread.start();

关于java - 如何将消息发送到静态处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25183046/

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