在填充完"/proc/net/arp“文件后,我使用AsyncTask读取它。问题是,在我读完每一行之后,我想对每个ip地址进行名称解析。这就是我得到异常错误的时候。我不会在主线程上执行这个操作,因为我对这个进程使用了AsyncTask。这是我的onProgressUpdate方法
protected void onProgressUpdate(Void... params) {
//update progress bar
/*scanProgress.setProgress(values[0].progressBar);*/
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(ARP_TABLE), "UTF-8"));
reader.readLine(); // Skip header.
String line;
while ((line = reader.readLine()) != null) {
Log.v("ARPFILE", line);
String[] arpLine = line.split("\\s+");
//if arp line contains flag 0x2 we parse host
if(arpLine[2].equals(ARP_FLAG)) {
final String ip = arpLine[0];
final String flag = arpLine[2];
final String mac = arpLine[3];
Node node = new Node(ip, mac);
hostList.add(node);
networkAdapter.notifyDataSetInvalidated();
// scanProgress.setProgress(node.progressBar);
}
}
reader.close();
}
catch (Exception ex) {
}
for(Node node: hostList) {
InetAddress inetAddress;
android.os.Debug.waitForDebugger();
try {
inetAddress = InetAddress.getByName(node.ip);
String hostname = inetAddress.getCanonicalHostName();
node.setHostName(hostname);
Log.v("HOSTNAME", hostname);
} catch (UnknownHostException e) {
// It's common that many discovered hosts won't have a NetBIOS entry.
}
}
}发布于 2019-04-19 18:28:48
我不会在主线程上执行这个操作,因为我对这个进程使用了AsyncTask。这是我的onProgressUpdate方法
在主线程上调用onProgressUpdate()方法。AsyncTask
onProgressUpdate(Progress...),在调用publishProgress(Progress...)后在UI线程上调用。执行的时间未定义。此方法用于在后台计算仍在执行时显示用户界面中的任何形式的进度。例如,它可以用于在文本字段中动画进度条或显示日志。
在doInBackground()中执行任何应该在UI线程上执行的代码
https://stackoverflow.com/questions/55765848
复制相似问题