【问题标题】:Context and Activity's reference上下文和活动的参考
【发布时间】:2011-08-09 23:40:46
【问题描述】:

我的应用设计存在一些问题,尤其是从不同于主 Activity 的类中打开资产。

我项目的这一部分是一个网络服务器,有 2 个类:WebServer 和 WebPage。 WebServer 有这些方法: start(), get(), post(), send(WebPage) 和一些构造函数;

WebPage 有 2 个变量:String head(HTTP 标头)和byte [] body(可以是文本或任何文件的内容)。 WebPage 有一种方法byte[] getFile(String filename),构造函数使用该方法将文件的字节保存在正文中。该文件是一项资产。

当 Activity 启动 (onCreate()) 时,它会创建一个 WebServer 实例,调用 start() 并保持监听。当服务器收到一个 GET 请求时,它会解析它并使用文件名创建一个 WebPage 对象来打开资产。最后 WebServer 只是用 send(WebPage) 发送页面。

从 WebPage 类中获取 Activity 引用的最佳方法是什么?

【问题讨论】:

    标签: android android-activity assets android-context


    【解决方案1】:

    由于您的问题应该得到更多解释:您希望您的 WebServer 尽可能通用,以便在 Android 和 PC 上运行。

    执行以下操作。创建您的通用 WebServer:

    public class WebServer{
        int port;
        public WebServer(int port){
            this.port = port;
        }
        ////////bla bla bla
    }
    

    创建你的安卓网络服务器

    public class AndroidWebServer extends WebServer{
        Context mContext;
        public webserver(Context mContext, int port){
            super(port);
            this.mContext = mContext;
        }
    }
    

    旧答案

    使用非常常用的方式,不用担心内存泄漏。

    public class webserver{
        Context mContext;
        public webserver(Context mContext){
            this.mContext = mContext;
        }
    }
    

    在你的活动中:

    webserver A = new webserver(this);
    

    【讨论】:

    • 好的!因此,没有办法进行相反的操作(例如,直接从 WebPage 类内部获取活动引用的指令)!? getApplicationContext() 适合这个目的吗?
    • 这不是相反的!你能解释一下为什么你不想在构造函数中传递它吗?
    • 我会为 WebServer 和 WebPage 提供一个更小、更通用的构造函数,例如:WebServer(int port)WebPage(String filename)。此外,我会(尽可能多地)有一个“通用”WebServer 类,用于 android 和 PC。但如果这是最好的解决方案,我想我会创建几个构造函数,带和不带 Context 参数。
    • 没关系!离开您的 WebServer Generic 类并创建 DroidWebServer extends WebServer 并向其中添加相关构造函数?
    • @supergiox 要帮助您的人,您应该勾选他们的答案 :) 答案旁边有一个勾号!当有人回答时,您正确地为他们打勾..相信我
    【解决方案2】:

    在构造函数中将其作为参数传递,或者添加一个方法以便您的活动能够传递自身。

    【讨论】:

      猜你喜欢
      • 2013-11-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多