【错误记录】Android 中调用 Process 命令行执行指令 ( java.lang.IllegalThreadStateException: process hasn‘t exited )
文章目录
- 一、报错信息
- 二、解决方案
一、报错信息
2021-05-07 13:24:24.672 29512-29512/kim.hsl.a7_zip E/AndroidRuntime: FATAL EXCEPTION: mainProcess: kim.hsl.a7_zip, PID: 29512java.lang.RuntimeException: Unable to start activity ComponentInfo{kim.hsl.a7_zip/kim.hsl.a7_zip.MainActivity}: java.lang.IllegalThreadStateException: process hasn't exitedat android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2951)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086)at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)at android.os.Handler.dispatchMessage(Handler.java:106)at android.os.Looper.loop(Looper.java:193)at android.app.ActivityThread.main(ActivityThread.java:6718)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)Caused by: java.lang.IllegalThreadStateException: process hasn't exitedat java.lang.UNIXProcess.exitValue(UNIXProcess.java:215)at kim.hsl.a7_zip.MainActivity.compress7z(MainActivity.kt:115)at kim.hsl.a7_zip.MainActivity.onCreate(MainActivity.kt:24)at android.app.Activity.performCreate(Activity.java:7144)at android.app.Activity.performCreate(Activity.java:7135)at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2931)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6718) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
问题描述 : 使用 Runtime.getRuntime().exec(cmd) 执行命令 , 如果实时打印出命令执行的命令行信息 , 使用如下代码 :
var process: Process = Runtime.getRuntime().exec(cmd)// 读取命令执行过程数据var reader = BufferedReader(InputStreamReader(process.inputStream))while (true) {val line = reader.readLine()if (line != null) {Log.i(TAG, "$line")}else{break}}
执行完毕后 , 调用如下代码查询执行结果 , 报上述错误 ;
process.exitValue()
二、解决方案
出现问题原因 : 读取命令执行过程的 BufferedReader 没有关闭 ;
正确用法 :
var process: Process = Runtime.getRuntime().exec(cmd)// 读取命令执行过程数据var reader = BufferedReader(InputStreamReader(process.inputStream))while (true) {val line = reader.readLine()if (line != null) {Log.i(TAG, "$line")}else{break}}reader.close()val exitValue = process.exitValue()
使用 BufferedReader 读取命令行执行过程 , 读取完毕后 , 及时关闭 BufferedReader ;
【错误记录】Android 中调用 Process 命令行执行指令 ( java.lang.IllegalThreadStateException: process hasn‘t exited )相关推荐
- Android中如何使用命令行查看内嵌数据库SQLite3
转载博客:http://www.linuxidc.com/Linux/2011-06/37135.htm 在上图中,除了最后一个红色的方框,其它方框都是adb shell下的命令. [1]在Andro ...
- Java在eclipse中调用opencv时报错:java.lang.UnsatisfiedLinkError的解决方法
昨天把Java+opencv的环境配置好后,迫不及待的进行测试...... 出师不利.... 第一个代码就有错误,代码如下: import org.opencv.core.*; import org. ...
- FFmpeg command line tool(Android中使用FFmpeg命令行)
官网地址:ffmpeg.org/ Android端,不想编译,可以直接使用ffmpeg-android-java 关于转码: 网络限制了视频传输的带宽.由于带宽限制,这就要求我们在传输之前通过实时视频 ...
- 在Android项目中调用FFmpeg命令
概述 FFmpeg,命令行非常强大.在PC机上,调用一行FFmpeg命令,就可以对视频文件进行剪切.合并.转码等功能.本文将介绍如何在Android中调用FFmpeg命令行. 编译 前面已经有两篇文章 ...
- python调用php命令行,python调用php函数 python怎样调用php文件中的函数详解
前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...
- 在 Android 中调用二进制可执行程序(native executable )
在 Android 中调用二进制可执行程序(native executable ) 前几天有需要在java代码中调用二进制程序,就在网上找了些资料,写点东西记录下. Android 也是基于linux ...
- android中的ping命令使用
前言 在做Android开发时,有时我们需要知道设备的网络好不好,光看手机上的信号格数是不准确的,比如在广州南站,人那么多,如果带宽不够的话,虽然你看着信号是满格的,但是网速也会很慢,有些地方,人少, ...
- Android系统篇之—-Android中的run-as命令引出升降权限的安全问题(Linux中的setuid和setgid)
一.前言 最近一周比较忙,没时间写东西了,今天继续开始我们今天的话题:run-as命令,在上周的开发中,遇到一个问题,就是在使用run-as命令的时候出现了一个错误,不过当时因为工作进度的问题,这问题 ...
- Android中的run-as命令引出升降权限的安全问题
转载自:http://blog.csdn.net/jiangwei0910410003/article/details/51405631 一.前言 最近一周比较忙,没时间写东西了,今天继续开始我们今天 ...
最新文章
- Go 学习笔记(46)— Go 标准库之 fmt(输入/输出格式化参数、Printf/Fprintf/Sprintf区别、Println/Fprintln/Sprintln 区别)
- linunx获取命令帮助
- Docker logs 命令
- OPA 11 - how is check called in my iClickTheCreateButton
- 计算机原理eprom,eprom eeprom和flash储存器的工作原理及区别
- apache camel_轻量级的开源集成:Apache Camel还是Spring集成?
- Spring组件之一 JDBC Template
- php eval 安全性,php – 使用eval解析表单输入的方程式的最安全的方法
- Python程序设计语言基础05:函数和代码复用
- 再谈几种语言的运行速度比较:看第三方比较结论!
- 10g添加用户 oracle_linux安装oracle
- 什么是动作分析?动作分析的方法有哪些?
- CSS绘制自己的小摩尔
- matlab的kron函数(kronecker乘积)
- php网站微博帐号登录代码,redis+php实现微博(一)注册与登录功能详解
- 岩板铺地好吗_岩板铺大客厅路面好么 比800*800的地砖更美观大方又空气?
- 花飞花落花飘谢,红绡香断有谁怜!
- 科技爱好者周刊:第 90 期
- TCP /IP 之TCP和UDP
- Windos - 桌面图标管理