Android 进程在从选择中读取数据时挂起



我有以下代码片段:

..
..
..
Process proc = runTimeObject.exec(new String[]{"su"});
        System.out.println("0");
        DataOutputStream outputStream = new DataOutputStream(proc.getOutputStream());
        //String Sql = "sqlite3 -csv /data/data/com.whatsapp/databases/msgstore.db "SELECT * FROM messages WHERE status<>13 AND key_from_me=0;" > /data/test.csv";
        String Sql = "sqlite3 -csv /data/data/com.whatsapp/databases/msgstore.db "SELECT m._id, m.key_remote_jid, m.data, m.media_wa_type, m.media_name FROM messages m, chat_list cl WHERE m.key_remote_jid = cl.key_remote_jid AND m.key_from_me=0 AND cl.unseen_message_count>0 AND m._id>COALESCE(cl.last_read_message_table_id, 0);"";
        System.out.println("1");
        if (outputStream != null){
            System.out.println("2");
            outputStream.writeBytes(Sql);
            outputStream.flush();
            System.out.println("3");
            outputStream.writeBytes("exitn");
            outputStream.flush();
            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String line;
            while((line = in.readLine()) != null) {
                System.out.println(line);
                System.out.println("4");
            }
            System.out.println("5");
        }
        System.out.println("6");
        try {
            proc.waitFor();
       ...
       ...
       ...

while 循环显示所有选定的数据,但程序挂起 hier 并且不前进(我没有看到 5(。我是java和Android的新手,不知道如何解决这个问题。请帮助我

您是否在主线程上运行长时间运行的任务?如果阻塞主线程超过几毫秒,则应用程序将被终止。尝试使用 AsyncTask 在后台运行任务。

问题解决了,我已经忘记了选择命令末尾的""。

最新更新