gpt4 book ai didi

android - 如何获取调用方法的 Activity 的引用?

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

我有一个扩展 AsyncTask 以发送以太网消息的类。在我的 MainActivity 中创建和调用时,它工作正常:

new SendCommandTask(MainActivity.this).execute(ipAddress, portNum, message);

但是,我想将其嵌入到新类的方法中......

public class NewClass{

String ipAddress;
String portNum;
String command;

public NewClass(String ip, String pn, String, c){
ipAddress = ip;
portNum = pn;
command = c;
}
public send(){
SendCommandTask(MainActivity.this).execute(ipAddress, portNum, command);
}
}

... 并直接从我的 MainActivity 调用该方法:

NewClass newClass = new NewClass;    
NewClass.send();

我曾尝试将 Activity 作为构造函数中的另一个参数传递,但是当我这样做时该方法会呕吐。是否有另一种方式来引用我的 NewClass 中的调用 Activity?还是我一直在从 MainActivity 运行 AsyncTask?(我希望这是有道理的,总的来说,我对 Java 和 OO 编程还很陌生。)非常感谢任何帮助!

最佳答案

请参阅this answer我几天前写的。我认为它也适用于此。主要的额外考虑是,您的 AsyncTask是否需要能够比其调用 Activity 更长寿?如果 Activity 有任何可能被关闭或重新启动,要么在 onStop() 中终止任务,要么注意不要使用任何共享字段。

如果您的 AsyncTask 将直接读取您传入的 Activity 中的任何成员,您最好将其保留在 Activity 中。当您希望它是独立的并且能够与多个 Activity 类一起工作时,最好将任务分解到一个独立的类中。

另外,考虑在服务而不是 Activity 中完成工作。我是IntentService的 super 粉丝.

关于android - 如何获取调用方法的 Activity 的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12290502/

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