0

我已经实现了一个在单独的进程中运行的服务。

该服务包含一个单独的线程,我有一个套接字连接。该线程有一个 run() ,它不断地向端口发送数据。

我的问题是在线程中触发 run() 后我不再与它有任何联系,我可以在打开套接字的程序中看到它有意识地发送数据但想法是我在它运行时例如,我可以更改它发送的数据。

这是我在外部线程中的运行:

public void run()
{

        if(run) 
            {

            // Team and player names message is sent when entering in a game

            setBaseMessage();
            SendMessageToCOMPort(base_message + CalculateCRC(base_message));
            sleep();  // waits for 100 ms
           }
}

有人知道可能出了什么问题吗?

4

1 回答 1

0

我不太明白你的问题。似乎您想在服务中运行一个单独的线程来进行一些套接字通信。此外,您希望能够影响线程使用套接字发送的数据。

我已经实现了一个在单独的进程中运行的服务。

首先,默认情况下,android 服务不会在单独的进程或线程中运行。因此,要运行长时间运行的操作,您必须自己使用 Java 线程开发多线程,并按照您的做法实现 run 方法。

单个进程的线程共享相同的内存。因此,要影响套接字线程正在做什么,您可以使用线程之间共享的数据结构,如队列或列表。例如,您可以应用生产者-消费者模式。生产者将数据传递到共享队列。消费者使用队列中的数据并对其进行处理。但是,请注意您必须同步对共享队列的访问。

我希望我能够澄清这个问题并给你一些解决问题的建议。

于 2012-11-17T11:37:21.190 回答