【发布时间】:2017-05-11 05:48:38
【问题描述】:
它正在抛出一个错误:
原因:java.lang.IllegalArgumentException:你必须在主线程上调用这个方法
代码:
Class CacheClearAsyncTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
Glide.get(getActivity()).clearDiskCache();
Glide.get(getActivity()).clearMemory();
return null;
}
@Override
protected void onPostExecute (Void result)
{
//Toast.makeText(getActivity(), "Cache cleared", Toast.LENGTH_LONG).show();
}
}
设置点击事件的偏好:
clearCacheBtnPref=findPreference(getResources().getString(R.string.pref_btn_clear_cache_key));
clearCacheBtnPref.setOnPreferenceClickListener(new
Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
new CacheClearAsyncTask().execute();
return true;
}
});
这不能在主线程中调用,因为它也会引发错误,而且它不允许我使用 asynctask。
Glide.get(getActivity()).clearDiskCache();
Glide.get(getActivity()).clearMemory();
【问题讨论】:
-
那么你的问题是什么?
-
@lelloman 我想清除按钮单击时的所有缓存文件
-
"你必须在主线程调用这个方法"
-
@lelloman 如果我把它放在主线程中它不起作用。它显示
java.lang.IllegalArgumentException: YOu must call this method on a background thread
标签: android android-asynctask android-glide