我正在用Java开发Android应用。我使用了很多库:firebase crashlytics,SQLCipher,ButterKnife等。问题是:当我从Android Studio运行该应用程序时,我注意到该应用程序仍保持活动状态,即使我关闭了所有活动。我知道有一些线程在后台工作。.但是我不知道如何检查哪个线程处于活动状态,更重要的是,它是做什么的。有什么想法吗?
zongjie720 回答:Android App仍然保持活动状态,没有任何活动
您可以使用getState()方法获取线程处于什么状态,该方法返回Thread.States的Enum。在给定的时间点,线程只能处于以下状态之一。
NEW尚未开始执行的Fresh线程。
RUNNABLE在Java虚拟机中执行的线程。
BLOCKED已阻塞的线程正在等待监视器锁定。
等待中的一个正在等待被另一个线程通知的线程。
TIMED_WAITING一个正在等待由另一线程通知特定时间的线程。
终止线程谁的运行方法已结束。
exports.MultiChannelInvoke = async function (bulkUploadArray) {
async.mapSeries(bulkUploadArray,async function (array,cb) {
let ap = array[0]
let apArray = ['PL','A','J','V','I'];
if (!apArray.includes(ap)) { // For Array's first value it is KL & it is getting inside this loop
//some manipulation
}
else {
//some manipulation
}
},(err,results) => {
if (err) {
masterResult = { message: 'Failed During async Map',errorMessage: err }
} else {
let mongoData = batch;
uploadsummary.create(mongoData)
masterResult = { FinalResults: results }
}
})
return masterResult
}
,
To kill the thread,u can do this :
myService.getThread().interrupt();
NOTE : the method Thread.stop() is deprecated
EDIT : : try this
public void stopThread(){
if(myService.getThread()!=null){
myService.getThread().interrupt();
myService.setThread(null);
}
}