android 异步任务突然停止
android asynctask suddenly stop
我正在使用 jtdc 从 MS SQL 开发应用程序网络。
此应用程序通过 AsyncTask 不断从服务器获取电影文件。
一次下载 2 或 3 部电影。但效果不佳。
例如,当我必须下载 3 个电影文件时,我在每个步骤中都打印了日志,第 1 和 2 个文件下载成功,但最后一个文件下载失败。我检查了所有代码,但我不知道为什么。也不会打印任何日志(包括 try catch)。这是我的代码(在 AsyncTask 中)。
for (int i = 0; i < movieInfoLists.size(); i++) {
Statement m_Statement3 = conn.createStatement();
Log.d("DOWN", "0");
Log.d("FILEKEY>>", movieInfoLists.get(i).fileKey + "");
ResultSet rs3 = m_Statement3
.executeQuery("SELECT * FROM VIEWDATA WHERE MstKeyId=" + movieInfoLists.get(i).fileKey);
Log.d("DOWN>>", "1");
while (rs3.next()) {
Log.d("r3동작 >>", "1");
try {
Log.d("r3동작 >>", "2");
InputStream input = new ByteArrayInputStream(rs3.getBytes("Phto"));
FileOutputStream output = new FileOutputStream(
new File(Environment.getExternalStorageDirectory().toString() + "/"
+ movieInfoLists.get(i).fileName));
byte[] buffer = new byte[1024];
int n = 0;
long total = 0;
while (-1 != (n = input.read(buffer))) {
total += n;
output.write(buffer, 0, n);
}
output.flush();
output.close();
input.close();
Log.d("r3동작 >>", "3");
} catch (IOException e) {
Log.d("file error 동작 >>", "M1Renewal L.982 "+calCurTime());
appendLog("file down drror ioEx" + "> M1Renewal 1089 L." + "TIME : " + calCurTime());
movieInfoLists.get(i).fileName = defaultMovieListInfo.get(0).fileName;
movieInfoLists.get(i).fileLocalPath = defaultMovieListInfo.get(0).fileLocalPath;
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
Log.d("r3동작 >>", "4");
Log.d("DOWN", "다운완료>>>" + movieInfoLists.get(i).fileName);
}
rs3.close();
m_Statement3.close();
}
这是我的日志。接下来没有更多的日志。并且不执行线程。
test.lee D/사이즈>>>: 3
测试。leeD/FILEKEY>>: 55
test.lee D/DOWN>>: 1
test.lee D/r3동작>>: 1
test.lee D/r3동작>>: 2
test.lee D/r3동작>>: 3
test.lee D/r3동작>>: 4
test.lee D/DOWN: 다운완료>>>a.mp4
test.lee D/FILEKEY>>: 58
test.lee D/DOWN>>: 1
test.lee D/r3동작>>: 1
test.lee D/r3동작>>: 2
test.lee D/r3동작>>: 3
test.lee D/r3동작>>: 4
test.lee D/DOWN: 다운완료>>>b.mp4
test.lee D/FILEKEY>>: 66
test.leetest.lee D/DOWN>>: 1
我猜是rs3(ResultSet)有问题。我为此建立了一个解决方案,但我没有找到。我必须做什么?
"movieInfoLists.get(2).fileKey" 的值是否正确?似乎 rs3.next() returns false.
使用Log打印movieInfoLists.get(2).fileKey,和rs3.
我正在使用 jtdc 从 MS SQL 开发应用程序网络。 此应用程序通过 AsyncTask 不断从服务器获取电影文件。 一次下载 2 或 3 部电影。但效果不佳。 例如,当我必须下载 3 个电影文件时,我在每个步骤中都打印了日志,第 1 和 2 个文件下载成功,但最后一个文件下载失败。我检查了所有代码,但我不知道为什么。也不会打印任何日志(包括 try catch)。这是我的代码(在 AsyncTask 中)。
for (int i = 0; i < movieInfoLists.size(); i++) {
Statement m_Statement3 = conn.createStatement();
Log.d("DOWN", "0");
Log.d("FILEKEY>>", movieInfoLists.get(i).fileKey + "");
ResultSet rs3 = m_Statement3
.executeQuery("SELECT * FROM VIEWDATA WHERE MstKeyId=" + movieInfoLists.get(i).fileKey);
Log.d("DOWN>>", "1");
while (rs3.next()) {
Log.d("r3동작 >>", "1");
try {
Log.d("r3동작 >>", "2");
InputStream input = new ByteArrayInputStream(rs3.getBytes("Phto"));
FileOutputStream output = new FileOutputStream(
new File(Environment.getExternalStorageDirectory().toString() + "/"
+ movieInfoLists.get(i).fileName));
byte[] buffer = new byte[1024];
int n = 0;
long total = 0;
while (-1 != (n = input.read(buffer))) {
total += n;
output.write(buffer, 0, n);
}
output.flush();
output.close();
input.close();
Log.d("r3동작 >>", "3");
} catch (IOException e) {
Log.d("file error 동작 >>", "M1Renewal L.982 "+calCurTime());
appendLog("file down drror ioEx" + "> M1Renewal 1089 L." + "TIME : " + calCurTime());
movieInfoLists.get(i).fileName = defaultMovieListInfo.get(0).fileName;
movieInfoLists.get(i).fileLocalPath = defaultMovieListInfo.get(0).fileLocalPath;
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
Log.d("r3동작 >>", "4");
Log.d("DOWN", "다운완료>>>" + movieInfoLists.get(i).fileName);
}
rs3.close();
m_Statement3.close();
}
这是我的日志。接下来没有更多的日志。并且不执行线程。
test.lee D/사이즈>>>: 3
测试。leeD/FILEKEY>>: 55
test.lee D/DOWN>>: 1
test.lee D/r3동작>>: 1
test.lee D/r3동작>>: 2
test.lee D/r3동작>>: 3
test.lee D/r3동작>>: 4
test.lee D/DOWN: 다운완료>>>a.mp4
test.lee D/FILEKEY>>: 58
test.lee D/DOWN>>: 1
test.lee D/r3동작>>: 1
test.lee D/r3동작>>: 2
test.lee D/r3동작>>: 3
test.lee D/r3동작>>: 4
test.lee D/DOWN: 다운완료>>>b.mp4
test.lee D/FILEKEY>>: 66
test.leetest.lee D/DOWN>>: 1
我猜是rs3(ResultSet)有问题。我为此建立了一个解决方案,但我没有找到。我必须做什么?
"movieInfoLists.get(2).fileKey" 的值是否正确?似乎 rs3.next() returns false.
使用Log打印movieInfoLists.get(2).fileKey,和rs3.