Android 任务突然停止
我正在使用jtdc从MS SQL开发应用程序网络。 此应用程序正在通过AsyncTask连续从服务器获取电影文件。 一次可以下载2到3部电影。但它并没有起到很好的作用。 例如,当我必须下载3个电影文件时,我将日志打印到每个步骤,1和2个文件下载良好,但最后一个文件没有。我检查了所有代码,但我不知道为什么。此外,未打印任何日志(包括try-catch)。这是我的代码(在AsyncTask中)Android 任务突然停止,android,sql-server,android-asynctask,jtds,Android,Sql Server,Android Asynctask,Jtds,我正在使用jtdc从MS SQL开发应用程序网络。 此应用程序正在通过AsyncTask连续从服务器获取电影文件。 一次可以下载2到3部电影。但它并没有起到很好的作用。 例如,当我必须下载3个电影文件时,我将日志打印到每个步骤,1和2个文件下载良好,但最后一个文件没有。我检查了所有代码,但我不知道为什么。此外,未打印任何日志(包括try-catch)。这是我的代码(在AsyncTask中) for(int i=0;i>”,movieinfolist.get(i).FILEKEY+“”); 结果集
for(int i=0;i>”,movieinfolist.get(i).FILEKEY+“”);
结果集rs3=m_语句3
.executeQuery(“从视图数据中选择*,其中MstKeyId=“+movieInfoLists.get(i).fileKey”);
Log.d(“向下>>”,“1”);
while(rs3.next()){
Log.d(“r3동작 >>", "1");
试一试{
Log.d(“r3동작 >>", "2");
InputStream输入=新的ByteArrayInputStream(rs3.getBytes(“Phto”);
FileOutputStream输出=新FileOutputStream(
新文件(Environment.getExternalStorageDirectory().toString()+“/”
+movieInfoLists.get(i.fileName));
字节[]缓冲区=新字节[1024];
int n=0;
长总计=0;
而(-1!=(n=input.read(buffer))){
总+=n;
输出写入(缓冲区,0,n);
}
output.flush();
output.close();
input.close();
Log.d(“r3동작 >>", "3");
}捕获(IOE异常){
Log.d(“文件错误동작 >>", "m1.982“+计算时间());
appendLog(“文件下载drror ioEx”+”>M11089 L.“+”时间:“+calCurTime());
movieInfoLists.get(i).fileName=defaultMovieListInfo.get(0).fileName;
movieInfoLists.get(i).fileLocalPath=defaultMovieListInfo.get(0).fileLocalPath;
e、 printStackTrace();
}捕获(例外e){
e、 printStackTrace();
}
Log.d(“r3동작 >>", "4");
Log.d(“向下”다운완료>>>" + movieInfoLists.get(i).fileName);
}
rs3.close();
m_语句3.close();
}
这是我的日志。下一个没有更多日志。并且不执行线程
李博士/사이즈>>>: 三,
test.leeD/FILEKEY>>:55
test.lee D/DOWN>>:1
测试D/r3동작>>:1
测试D/r3동작>>:2
测试D/r3동작>>:3
测试D/r3동작>>:4
测试点D/DOWN:다운완료>>>a、 mp4
test.lee D/FILEKEY>>:58
test.lee D/DOWN>>:1
测试D/r3동작>>:1
测试D/r3동작>>:2
测试D/r3동작>>:3
测试D/r3동작>>:4
测试点D/DOWN:다운완료>>>b、 mp4
test.lee D/FILEKEY>>:66
test.leetest.lee D/DOWN>>:1
我猜rs3(ResultSet)是个问题。我找到了一个解决方案,但没有找到。我该怎么办?MovieInfoList.get(2.fileKey)的值是否正确?rs3.next()似乎返回false
使用日志打印电影信息列表。get(2)、fileKey和rs3。是否要向全世界开放sql server?通过web应用程序获取数据不是更好吗?谢谢您的回答。
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();
}