java - 是否有原因导致线程仅在我强制调试时才执行?

标签 java android multithreading debugging

我在尝试将数据发送到数据库时遇到问题。我让主线程为连接打开一个新线程,然后运行 ​​sql 语句并在后台将一行插入到数据库中,同时 UI 切换到另一个 Activity (这是一个相机 Activity )。问题是,正常运行时,线程似乎不会执行,但在调试中运行并单步执行 ASyncTask 的每一行时,它会执行。数据库唯一更新的时间是当我单步执行调试时。数据库位于 Microsoft SQL Server 上。

我已经尝试过多次,并且线程始终仅在我通过单步调试来强制执行时才执行。

在主线程中

SendToDB sendFalsePositive = new SendToDB();
sendFalsePositive.execute();

正在执行的AsyncTask

Connection conn;

        try {
//          com.microsoft.sqlserver.jdbc.sqlserver.SQLServerDriver
            Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();

            // jdbc and jtds are the drivers that allow the connection to outside databases
            // sq41ddb.na.steelcase.net:3250 is the server and port that are need to connect to the scrapMinder database
            String connString = "jdbc:jtds:sqlserver://SQLSERVER;databaseName=DATABASENAME;user=USERNAME;password=PASSWORD";

            conn = DriverManager.getConnection(connString);

            Log.i("Connection", "Open");
            Log.i("SEND TO DB", "Date: " + date + " Time: " +time);
            Statement statement = conn.createStatement();

            statement.executeUpdate("Insert Into DATABASENAME (Date, Time) \n" +
                    "values ('" + date + "', '" + time +"' );"); //SQL SELECT STATEMENT TO INSERT INTO DATABASE 
            statement.setQueryTimeout(0);


        } catch (Exception e) {
            Log.e("Error SendToDB", e.toString());
        }

有没有办法强制这个线程执行?

最佳答案

My guess would be the AsyncTask is destroyed when its hosting activity is destroyed as you switch activities. I think you'll want a service to accomplish this.

这就是问题所在。当 Activity 切换时,AsyncTasks 被删除,导致 SQL 永远不会被执行。我添加了一个新 Activity 并调用其中的函数,现在正在执行 SQL。感谢纳什的提示!

关于java - 是否有原因导致线程仅在我强制调试时才执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58207631/

相关文章:

启动 spring mvc 项目时出现 java.lang.NumberFormatException 异常

android - 谷歌地图返回 nullpointerexception 谷歌地图 Android V2

android - 当我构建我的应用程序时,如果它们属于另一个模块,导入将成为未解析的引用

python - 无法使用 process.kill() 或 process.terminate() 或 os.kill() 或使用 psutil 终止 Python 子进程

C# 将大量数据从 CSV 导入数据库

java - 经度和纬度始终使用gps android返回零

java - 使用 LookAndFeel 进行 JFrame 序列化

java - 如何确定加载/需要哪些库?

android - 不会共享的应用程序是否需要内容提供程序?

c# - 显示Windows窗体时,控制台应用程序不接受输入