gpt4 book ai didi

java - 为什么我的所有听众都没有注册?

转载 作者:行者123 更新时间:2023-12-01 17:33:27 24 4
gpt4 key购买 nike

public interface DownloadListener {
public void onDownloaded();
}

public class DownloadManager {

private static DownloadManager instance;

private DownloadListener mDownloadListener;

public static synchronized DownloadManager getInstance(){
if(instance == null)
instance = new DownloadManager();
return instance;
}


private DownloadManager() {
myHandler.sendEmptyMessageDelayed(29, 3 * 1000);
}

public void registerDownloadListener(DownloadListener downloadListener) {
mDownloadListener = downloadListener;
}

Handler myHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
if (msg.what == 29) {
mDownloadListener.onDownloaded();
return true;
}
return false;
}
});
}

public class I implements DownloadListener {

public I() {
DownloadManager.getInstance().registerDownloadListener(this);
}

@Override
public void onDownloaded() {
Log.e("TAG", "I onDownloaded");
}
}

public class You implements DownloadListener {

public You() {
DownloadManager.getInstance().registerDownloadListener(this);
}

@Override
public void onDownloaded() {
Log.e("TAG", "You onDownloaded");
}

}

public class PATTERNSActivity extends Activity implements DownloadListener {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

new I();
new You();

DownloadManager.getInstance().registerDownloadListener(this);
}

@Override
public void onDownloaded() {
Log.e("TAG","PATTERNSActivity onDownloaded");
}

}

我期望得到:

I onDownloaded

You onDownloaded

PATTERNSActivity onDownloaded

但我只得到:

PATTERNSActivity onDownloaded

这可能是什么问题?

最佳答案

您将注册的下载器保存在单个实例属性中:

// Last call's downloadListener wins.
public void registerDownloadListener(DownloadListener downloadListener) {
mDownloadListener = downloadListener;
}

最后注册的是该 Activity 的:

new I();   // First set singleton's property to an instance of I...
new You(); // ...then to an instance of You...
// ...then to the current instance.
DownloadManager.getInstance().registerDownloadListener(this);
<小时/>

根据您的评论进行编辑。

public void registerDownloadListener(DownloadListener downloadListener) {
mDownloadListeners.add(downloadListener);
}

...

public boolean handleMessage(Message msg) {
if (msg.what != 29) {
return false;
}

for (DownloadListener listener : mDownloadListeners) {
listener.onDownloaded();
}

return true;
}

关于java - 为什么我的所有听众都没有注册?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8732759/

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