如何在服务中运行?

时间:2012-11-17 10:57:04

标签: java android multithreading service

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

此服务包含一个单独的线程,其中我有一个套接字连接。 该线程有一个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
           }
}

任何人都知道可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

我没有完全解决你的问题。您似乎希望在服务中运行一个单独的线程来执行一些套接字通信。此外,您希望能够使用套接字影响线程发送的数据。

  

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

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

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

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