android - SocketServer.accept() 使应用程序崩溃或有时无法正常工作
问题描述
每当我称之为SocketServer
强制关闭应用程序时。如果我在后台服务中运行它,那么它会跳过该代码。
public void run() {
try {
//Log.e("Debugging Data: ", "-------------->>>>> Here "+LocalServerThread.getState());
if (LocalServerThread.getState() == Thread.State.RUNNABLE) {
try {
if(socClient!=null) {
ServerAsyncTask serverAsyncTask = new ServerAsyncTask();
serverAsyncTask.execute(new Socket[]{socClient});
}
}
catch(Exception ex)
{
Log.e("Debugging Data: ", "-------------->>>>> Server ERROR "+ex.getMessage());
}
}
}
catch(Exception ex)
{
Log.e("Debugging Data: ", "Not Running");
Log.e("Debugging Data: ", "New Thread Created");
LocalServerThread = new Thread() {
@Override
public void run() {
try {
//ServerSocket socServer = new ServerSocket(8088);
while (true)
{
socServer=null;
socServer = new ServerSocket(5000);
Log.e("Debugging Data: ", "-------------->>>>> 1 ");
socClient = socServer.accept();
Log.e("Debugging Data: ", "-------------->>>>> 2 ");
//Log.e("Debugging Data: ", "New Thread Running");
if(socClient==null) {
Log.e("Debugging Data: ", "SOC Client nULL");
socClient = socServer.accept();
Log.e("Debugging Data: ", "New SOC Client Created");
}
ServerAsyncTask serverAsyncTask = new ServerAsyncTask();
serverAsyncTask.execute(new Socket[]{socClient});
}
} catch (IOException e) {
Log.e("Debugging Data: ", "New Thread Error "+e.getMessage());
e.printStackTrace();
}
}
};
LocalServerThread.start();
Log.e("Debugging Data: ", "-------------->>>>> Here2 "+LocalServerThread.getState());
}
}
解决方案
推荐阅读
- php - 将数据库中的数据显示为选择中的选项
- apache-spark - Py4JJavaError:org.apache.spark.SparkException:在 awaitResult 中抛出异常
- php - 如何在 laravel 5.6 中下载 pdf 文件?
- javascript - 更改变量名后我的代码停止运行
- php - 用于 levelRange 的 Log4php 单独输出不起作用
- javascript - 在 JavaScript 中使用 for 循环的基于条件的迭代
- python-3.x - Celery 动态定义工作流程
- scala - 基于火花结构化流中的多个条件从另一列更新列值
- sql - 将 Access 查询的结果保存到 SQL Server
- django - 尽管安装了 heroku 中没有名为 PIL 的模块