什么是以编程方式清除android应用程序中的缓存的正确方法.我已经使用了以下代码,但它看起来不适合我
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
clearApplicationData();
}
public void clearApplicationData() {
File cache = getCacheDir();
File appDir = new File(cache.getParent());
if (appDir.exists()) {
String[] children = appDir.list();
for (String s : children) {
if (!s.equals("lib")) {
deleteDir(new File(appDir, s));
Log.i("EEEEEERRRRRRROOOOOOORRRR", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************");
}
}
}
}
public static boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
for (int i …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Android中实现MediaPlayer的重启,当错误发生时(连接服务器丢失,网络无法访问等).我见过很多代码示例,但都有点不标准.我认为必须有对应于developer.android.com的标准重启方式,但是从这里不清楚如何设置将重启播放器的侦听器.
以下是我的代码部分:
public class PlayerService extends Service implements OnErrorListener {
....
////////////////////
this.mplayer = MediaPlayer.create(c, Uri.parse(url));
mplayer.setOnErrorListener(onErrorListener);
////////////////////
MediaPlayer.OnErrorListener onErrorListener = new MediaPlayer.OnErrorListener()
{
@Override
public boolean onError(MediaPlayer mp, int what, int extra)
{
Log.e(getPackageName(), String.format("Error(%s%s)", what, extra));
playlist="ERROR";
restart();
return true;
}
};
@Override
public boolean onError(MediaPlayer player, int what, int extra) {
restart();
return true;
};
public void restart()
{
try
{
playlist="RELOADING";
for (int u=1; u<=5; u++)
{
Thread.sleep(5000);
mplayer.stop();
mplayer.release();
mplayer=null;
playSong(getApplicationContext(),currenturl);
};
}
catch (Exception …Run Code Online (Sandbox Code Playgroud) 长时间循环播放同一曲目(大约一小时或更长时间)后会出现错误 (1,-22)。我无法弄清楚该错误的原因。如果曲目播放时间较短,则一切正常。但如果我在我的电脑上长时间跟踪播放Service,有时会出现错误。
我知道 1 是MEDIA_ERROR_UNKNOWN,但找不到有关 -22 的任何信息。
有什么建议么?API 24