gpt4 book ai didi

java - Android通过Context从外部类调用方法

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

我的主 Activity 中有几个 AsyncTask 类,每个类从外部获取一些少量数据,将它们存储在内存中,然后调用主 Activity 中的方法来显示数据。我想将这些类移至它们自己的文件中,但它们引用主要 Activity 中的方法和变量。有人提到的一种解决方案是将 Activity 上下文传递到 AsyncTask 中,如下所示,以便调用您想要的 Activity 方法:

((ActivityName)mContext).methodYouWant(...)
((ActivityName)mContext).varYouWant

这是从外部类访问主 Activity 的方法/成员的正确方法吗?

最佳答案

它会起作用,但不是很好。显然它不灵活并且容易受到 future 的痛苦。

AsyncTask 没什么特别的,只是一个类。因此,让您的 Activity 类定义一个监听器接口(interface),将该监听器传递到 AsyncTask 的构造函数并稍后调用该监听器怎么样?

public class MyActivity extends Activity {
public interface AsyncTaskCompleteListener {
public void onComplete(/* any data you want to share */);
}

...

private AsyncTaskCompleteListener myListener = new ...() {
// do stuff with data
}

private MyAsyncTask extends AsyncTask<Something,Something,Something> {

private AsyncTaskCompleteListener listener = null;
public MyAsyncTask(AsyncTaskCompleteListener listener) {
this.listener = listener;
}

protected void onPostExecute(Something result) {
if(listener != null) {
listener.onComplete(/*params*/);
}
}
}
...
}

只是一个想法。

关于java - Android通过Context从外部类调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9121893/

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