上下文和活动的参考

发布于 2024-11-29 01:15:23 字数 578 浏览 2 评论 0原文

我的应用程序的设计存在一些问题,特别是从与主活动不同的类中打开资产。

我的项目的这一部分是一个网络服务器,有 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 引用的最佳方法是什么?

I've some problem with the design of my app, especially opening assets from a class, different from the main Activity.

This part of my project is a webserver and there are 2 classes: WebServer and WebPage. WebServer has these methods:
start(), get(), post(), send(WebPage) and some constructors;

WebPage has 2 variables: String head (the HTTP header) and byte [] body (the content who can be text or any file).
WebPage has one method, byte[] getFile(String filename), used by constructors to save the bytes of the file in body. The file is an asset.

When the Activity starts (onCreate()), it creates an instance of WebServer, call start() and stay in listening. When the server receives a GET request, it parses it and it creates a WebPage object using the filename to open the asset. Finally WebServer just sends the page with send(WebPage).

Which is the best way to obtain an Activity's reference from the WebPage class?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

明媚如初 2024-12-06 01:15:23

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

执行以下操作。创建你的通用Web服务器:

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

创建你的android Web服务器

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);

Since your question should be more explained: you want to keep your WebServer as generic as possible so that it works on Android and on a PC.

Do the following. Create your generic WebServer:

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

Create your android WebServer

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

Old Answer

Use the very usual way and don't worry about memory leak.

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

In your activity:

webserver A = new webserver(this);
北陌 2024-12-06 01:15:23

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

Pass it as a parameter in the constructor, or add a method so your activity will be able to pass itself.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文