Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获取对调用方法的活动的引用?_Android - Fatal编程技术网

Android 如何获取对调用方法的活动的引用?

Android 如何获取对调用方法的活动的引用?,android,Android,我有一个类,它扩展了AsyncTask以发送以太网消息。在我的MainActivity中创建和调用时,它工作正常: new SendCommandTask(MainActivity.this).execute(ipAddress, portNum, message); 但是,我想将其嵌入到新类中的方法中 public class NewClass{ String ipAddress; String portNum; String command; public Ne

我有一个类,它扩展了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();
我曾尝试将活动作为构造函数中的另一个参数传递,但当我这样做时,方法会呕吐。在我的NewClass中,是否有其他方法引用调用活动?或者,我无法从MainActivity运行AsyncTask?
(我希望这是有意义的,一般来说我对Java和OO编程非常陌生。)非常感谢您的帮助

您可以尝试将上一个活动作为上下文传递到新类的构造函数中

public NewClass(Context main活动、字符串ip、字符串pn、字符串、c)


它可能会工作,但似乎有点不太正常。

您可以尝试将以前的活动作为上下文传递到新类的构造函数中

public NewClass(Context main活动、字符串ip、字符串pn、字符串、c)

它可能有用,但似乎有点粗糙。

请看我几天前写的。我认为这也适用于这里。主要的附加考虑是,您是否需要能够比它的调用活动更长寿?如果活动有可能关闭或重新启动,请在onStop()中终止该任务,或者小心不要使用任何共享字段

如果您的AsyncTask要直接读取作为您要传递的活动一部分的任何成员,那么您最好将其保留在活动中。将任务分解为独立类最好是在您希望它独立并且能够处理多个活动类的情况下完成

也可以考虑在服务中做作业而不是活动。我非常喜欢。

请看我几天前写的。我认为这也适用于这里。主要的附加考虑是,您是否需要能够比它的调用活动更长寿?如果活动有可能关闭或重新启动,请在onStop()中终止该任务,或者小心不要使用任何共享字段

如果您的AsyncTask要直接读取作为您要传递的活动一部分的任何成员,那么您最好将其保留在活动中。将任务分解为独立类最好是在您希望它独立并且能够处理多个活动类的情况下完成


也可以考虑在服务中做作业而不是活动。我是个大粉丝。我同意Sparky的观点,你应该为此考虑一下。否则,当你说“但是方法是呕吐”的时候,请把你提到的错误张贴。另外,这里有一个关于活动和异步任务交互的更多信息:我同意Sparky的观点,你应该为此考虑IntService。否则,请在您说“但是方法呕吐”时发布您所指的错误。此外,这里还有一些关于活动和异步任务如何交互的更多信息:是的,听起来您肯定应该使用IntentService。我的应用程序中只有一个活动(无论如何,现在),因此它肯定会比异步任务更有效,它的寿命很短。它只是通过ip发送一个字符串,然后结束。听起来我最好把电话留在活动代码里。我肯定会尝试切换到一种服务,但目前这有点让我不知所措。一次只做一件事:)谢谢你的帮助!是的,听起来你肯定应该使用IntentService。我的应用程序中只有一个活动(无论如何,现在),所以它肯定会比AsyncTask更有效,因为AsyncTask的生命周期很短。它只是通过ip发送一个字符串,然后结束。听起来我最好把电话留在活动代码里。我肯定会尝试切换到一种服务,但目前这有点让我不知所措。一次只做一件事:)谢谢你的帮助!SendCommandTask需要一个MainActivity类型的参数,因此我仍然需要创建一个新的MainActivity对象来使用。如何将上下文与MainActivity对象重新关联?不过,你是对的。不管是哪种方式,这似乎是一个不雅观的解决方案。SendCommandTask需要一个MainActivity类型的参数,因此我仍然需要创建一个新的MainActivity对象来使用。如何将上下文与MainActivity对象重新关联?不过,你是对的。不管怎样,这似乎是一个不雅观的解决方案。