You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
相关代码如下:startOffset、contentLength、currentOffset是long型,确按int读取。
public class BlockInfoRow {
private final int breakpointId;
private final long startOffset;
private final long contentLength;
private final long currentOffset;
public BlockInfoRow(Cursor cursor) {
this.breakpointId = cursor.getInt(cursor.getColumnIndex(HOST_ID));
this.startOffset = cursor.getInt(cursor.getColumnIndex(START_OFFSET));
this.contentLength = cursor.getInt(cursor.getColumnIndex(CONTENT_LENGTH));
this.currentOffset = cursor.getInt(cursor.getColumnIndex(CURRENT_OFFSET));
}
Log
在okdownload-breakpoint-sqlite增加部分调试log,打印如下:
--------- beginning of main
--------- beginning of system
10-11 17:41:28.911 3160 3160 E debug : ##return BreakpointStoreOnSQLite##
10-11 17:41:29.745 3332 3332 E debug : ##return BreakpointStoreOnSQLite##
10-11 17:41:29.989 3238 3238 E debug : ##return BreakpointStoreOnSQLite##
10-11 17:41:31.607 3613 3613 E debug : ##return BreakpointStoreOnSQLite##
10-11 17:41:37.620 3160 3877 E debug : ##get BreakpointInfo,task:1
10-11 17:41:37.627 3160 3877 E debug : ##get BreakpointInfo,task:1
10-11 17:41:37.627 3160 3877 E debug : ##get BreakpointInfo,task:1
10-11 17:41:37.628 3160 3881 E debug : ##get BreakpointInfo,task:1
10-11 17:41:39.130 3160 3287 E debug : ##get BreakpointInfo,task:1
10-11 17:41:39.134 3160 3287 E debug : insert blockCount success:1current_offset=4096 start_offset=0 content_length=2568924379 breakpoint_id=1 block_index=0
10-11 17:41:39.957 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:756868
10-11 17:41:41.985 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:1794048
10-11 17:41:44.004 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:1773568
10-11 17:41:44.889 3160 3160 E debug : ##get BreakpointInfo,task:1
10-11 17:41:46.035 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:2158592
10-11 17:41:48.073 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:2568192
10-11 17:41:50.117 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:2977792
10-11 17:41:52.166 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:3387392
10-11 17:41:53.477 3160 3160 E debug : ##get BreakpointInfo,task:1
10-11 17:41:54.196 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:3795208
10-11 17:41:56.241 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:3899392
10-11 17:41:57.049 3160 3160 E debug : ##get BreakpointInfo,task:1
10-11 17:41:57.077 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:1949696
OkDownload Version
v1.0.7
Problem Describe
使用OKdownload下载一个大文件(如2.4G,超出int范围,为long型), 下载一部分后,退出app,并杀掉该进程;重新进入app下载,此时下载进度从0开始。
小文件下载,断点续传正常,没有该问题。
###Cause
第二次重新进入app下载时,新建BreakpointStoreOnSQLite时,会判断BlockInfoRow的startOffset, contentLength, currentOffset等字段,如果小于0,则抛出异常,无法使用SQLite里的断点信息。
大文件下载时,contentLength字段会被写入long型的数据(超出int范围),第二次下载读取BlockInfoRow的contentLength时,仍然是按int型读取,导致读取到负值,加载BreakpointStoreOnSQLite、断点信息失败。
相关代码如下:startOffset、contentLength、currentOffset是long型,确按int读取。
public class BlockInfoRow {
private final int breakpointId;
Log
在okdownload-breakpoint-sqlite增加部分调试log,打印如下:
--------- beginning of main
--------- beginning of system
10-11 17:41:28.911 3160 3160 E debug : ##return BreakpointStoreOnSQLite##
10-11 17:41:29.745 3332 3332 E debug : ##return BreakpointStoreOnSQLite##
10-11 17:41:29.989 3238 3238 E debug : ##return BreakpointStoreOnSQLite##
10-11 17:41:31.607 3613 3613 E debug : ##return BreakpointStoreOnSQLite##
10-11 17:41:37.620 3160 3877 E debug : ##get BreakpointInfo,task:1
10-11 17:41:37.627 3160 3877 E debug : ##get BreakpointInfo,task:1
10-11 17:41:37.627 3160 3877 E debug : ##get BreakpointInfo,task:1
10-11 17:41:37.628 3160 3881 E debug : ##get BreakpointInfo,task:1
10-11 17:41:39.130 3160 3287 E debug : ##get BreakpointInfo,task:1
10-11 17:41:39.134 3160 3287 E debug : insert blockCount success:1current_offset=4096 start_offset=0 content_length=2568924379 breakpoint_id=1 block_index=0
10-11 17:41:39.957 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:756868
10-11 17:41:41.985 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:1794048
10-11 17:41:44.004 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:1773568
10-11 17:41:44.889 3160 3160 E debug : ##get BreakpointInfo,task:1
10-11 17:41:46.035 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:2158592
10-11 17:41:48.073 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:2568192
10-11 17:41:50.117 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:2977792
10-11 17:41:52.166 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:3387392
10-11 17:41:53.477 3160 3160 E debug : ##get BreakpointInfo,task:1
10-11 17:41:54.196 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:3795208
10-11 17:41:56.241 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:3899392
10-11 17:41:57.049 3160 3160 E debug : ##get BreakpointInfo,task:1
10-11 17:41:57.077 3160 3887 E debug : BreakpointStoreOnSQLite onSyncToFilesystemSuccess, blockIndex:0, increaseLength:1949696
杀进程后,重新启动下载:
10-11 17:42:07.654 4868 4868 E debug : ##return BreakpointStoreOnSQLite##
10-11 17:42:07.657 4868 4868 E debug : ###BlockInfoRow startOffset, contentLength, currentOffset###0,-1726042917,25064844
10-11 17:42:07.659 4868 4868 E debug : ##create BreakpointStoreOnSQLite fail InvocationTargetException##java.lang.reflect.InvocationTargetException
10-11 17:42:07.659 4868 4868 E debug : ##return BreakpointStoreOnCache##
10-11 17:42:08.380 5007 5007 E debug : ##return BreakpointStoreOnSQLite##
10-11 17:42:08.390 5007 5007 E debug : ###BlockInfoRow startOffset, contentLength, currentOffset###0,-1726042917,25064844
10-11 17:42:08.392 5007 5007 E debug : ##create BreakpointStoreOnSQLite fail InvocationTargetException##java.lang.reflect.InvocationTargetException
10-11 17:42:08.392 5007 5007 E debug : ##return BreakpointStoreOnCache##
The text was updated successfully, but these errors were encountered: