Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openthos
oto_packages_providers_DownloadProvider
提交
005ac217
O
oto_packages_providers_DownloadProvider
项目概览
openthos
/
oto_packages_providers_DownloadProvider
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oto_packages_providers_DownloadProvider
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
005ac217
编写于
10月 17, 2014
作者:
J
Jeff Sharkey
提交者:
Android Git Automerger
10月 17, 2014
浏览文件
操作
浏览文件
下载
差异文件
am
3ee03ac3
: am
e24609e8
: Trim stale downloads from third-party apps.
* commit '
3ee03ac3
': Trim stale downloads from third-party apps.
上级
98be4b70
3ee03ac3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
47 addition
and
5 deletion
+47
-5
src/com/android/providers/downloads/DownloadIdleService.java
src/com/android/providers/downloads/DownloadIdleService.java
+47
-5
未找到文件。
src/com/android/providers/downloads/DownloadIdleService.java
浏览文件 @
005ac217
...
...
@@ -29,6 +29,7 @@ import android.os.Environment;
import
android.provider.Downloads
;
import
android.system.ErrnoException
;
import
android.text.TextUtils
;
import
android.text.format.DateUtils
;
import
android.util.Slog
;
import
com.android.providers.downloads.StorageUtils.ConcreteFile
;
...
...
@@ -57,10 +58,11 @@ public class DownloadIdleService extends JobService {
@Override
public
void
run
()
{
cleanStale
();
cleanOrphans
();
jobFinished
(
mParams
,
false
);
}
}
;
}
@Override
public
boolean
onStartJob
(
JobParameters
params
)
{
...
...
@@ -75,7 +77,47 @@ public class DownloadIdleService extends JobService {
return
false
;
}
private
interface
DownloadQuery
{
private
interface
StaleQuery
{
final
String
[]
PROJECTION
=
new
String
[]
{
Downloads
.
Impl
.
_ID
,
Downloads
.
Impl
.
COLUMN_STATUS
,
Downloads
.
Impl
.
COLUMN_LAST_MODIFICATION
,
Downloads
.
Impl
.
COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI
};
final
int
_ID
=
0
;
}
/**
* Remove stale downloads that third-party apps probably forgot about. We
* only consider non-visible downloads that haven't been touched in over a
* week.
*/
public
void
cleanStale
()
{
final
ContentResolver
resolver
=
getContentResolver
();
final
long
modifiedBefore
=
System
.
currentTimeMillis
()
-
DateUtils
.
WEEK_IN_MILLIS
;
final
Cursor
cursor
=
resolver
.
query
(
Downloads
.
Impl
.
ALL_DOWNLOADS_CONTENT_URI
,
StaleQuery
.
PROJECTION
,
Downloads
.
Impl
.
COLUMN_STATUS
+
" >= '200' AND "
+
Downloads
.
Impl
.
COLUMN_LAST_MODIFICATION
+
" <= '"
+
modifiedBefore
+
"' AND "
+
Downloads
.
Impl
.
COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI
+
" == '0'"
,
null
,
null
);
int
count
=
0
;
try
{
while
(
cursor
.
moveToNext
())
{
final
long
id
=
cursor
.
getLong
(
StaleQuery
.
_ID
);
resolver
.
delete
(
ContentUris
.
withAppendedId
(
Downloads
.
Impl
.
ALL_DOWNLOADS_CONTENT_URI
,
id
),
null
,
null
);
count
++;
}
}
finally
{
IoUtils
.
closeQuietly
(
cursor
);
}
Slog
.
d
(
TAG
,
"Removed "
+
count
+
" stale downloads"
);
}
private
interface
OrphanQuery
{
final
String
[]
PROJECTION
=
new
String
[]
{
Downloads
.
Impl
.
_ID
,
Downloads
.
Impl
.
_DATA
};
...
...
@@ -93,10 +135,10 @@ public class DownloadIdleService extends JobService {
// Collect known files from database
final
HashSet
<
ConcreteFile
>
fromDb
=
Sets
.
newHashSet
();
final
Cursor
cursor
=
resolver
.
query
(
Downloads
.
Impl
.
ALL_DOWNLOADS_CONTENT_URI
,
Download
Query
.
PROJECTION
,
null
,
null
,
null
);
Orphan
Query
.
PROJECTION
,
null
,
null
,
null
);
try
{
while
(
cursor
.
moveToNext
())
{
final
String
path
=
cursor
.
getString
(
Download
Query
.
_DATA
);
final
String
path
=
cursor
.
getString
(
Orphan
Query
.
_DATA
);
if
(
TextUtils
.
isEmpty
(
path
))
continue
;
final
File
file
=
new
File
(
path
);
...
...
@@ -111,7 +153,7 @@ public class DownloadIdleService extends JobService {
// currently mounted device, so remove it from database.
// This logic preserves files on external storage while
// media is removed.
final
long
id
=
cursor
.
getLong
(
Download
Query
.
_ID
);
final
long
id
=
cursor
.
getLong
(
Orphan
Query
.
_ID
);
Slog
.
d
(
TAG
,
"Missing "
+
file
+
", deleting "
+
id
);
resolver
.
delete
(
ContentUris
.
withAppendedId
(
Downloads
.
Impl
.
ALL_DOWNLOADS_CONTENT_URI
,
id
),
null
,
null
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录