我的问题可能在同一时间变得简单和尴尬,但我有点卡住了。
我有一个Main.java类,它扩展了Activity。
在该课程中,我执行以下操作:
ringerServer = new Thread(new RingerServer());
ringerServer.start();
我想要做的是让RingerServer线程不断运行。
在该线程中,我监听TCP连接。如果我得到一个,我会启动另一个类,它发送和接收UDP数据包。
public class RingerServer implements Runnable {
public static final int SERVERPORT = 4445; // Default port to connect to
@Override
public void run() {
try {
// Create a socket for handling incoming requests
ServerSocket server = new ServerSocket(SERVERPORT);
while (!VoIPCall.onCall) {
// Wait for an incoming connection
Socket clientSocket = server.accept();
// TODO: Display a message for the user to accept or decline
// For now, automatically accept the call
Intent myIntent = new Intent(null, VoIPCall.class);
// Put the IP as a parameter
myIntent.putExtra("inetAddress", clientSocket.getInetAddress());
startActivity(myIntent);
}
} catch (IOException e) {
Log.e("TCP", "S: Error", e);
}
}
}
我的问题与这些行有关:
Intent myIntent = new Intent(null, VoIPCall.class);
myIntent.putExtra("inetAddress", clientSocket.getInetAddress());
startActivity(myIntent);
这些行在Activity中可以正常工作,但它不会抱怨,因为它是一个Thread,它不知道Activity类,因为它不会扩展它,而是实现Runnable。
我不知道如何让我的程序继续运行RingerServer,但让主线程转到VoIPCall类。有什么想法吗?
我非常感谢你的帮助。
非常感谢,
Jary
答案 0 :(得分:1)
您应该将线程移动到Service而不是活动。我建议您首先阅读Android Dev Guide的Processes and Threads部分。然后查看Service的API文档,这将帮助您开始创建一个。