大家好,感谢您的阅读。
这个问题是我原来的帖子的后续问题。 https://stackoverflow.com/questions/25828412/main-activity-progress-bars-and-strike-through-text-reset-after-a-period-of-app 。然而,我现在已经弄清楚发生了什么,但仍然需要一些关于如何解决它的建议。
只是回顾一下......
基本上,我编写了一个媒体播放器应用程序,它使用许多标准进度条,这些进度条以编程方式在播放列表中的每个轨道标题下方创建。每个进度条都会跟踪播放列表中位于其下方的歌曲的进度。
我还在 list 中使用以下代码来确保应用程序始终返回到相同的主要 Activity 。
android:alwaysRetainTaskState="true"
android:launchMode="singleTask"
现在我遇到的问题是,当用户返回主屏幕,然后在 30 到 60 分钟后重新启动应用程序时,尽管其他一切都保持原样 - 如果进度条仅部分满(即轨道已暂停或中途停止)突然跳到 100%。
我发现当应用程序缓存的进程被其他应用程序从列表末尾撞出时,就会发生这种情况。 IE。我可以通过暂停该应用程序,然后打开大量其他应用程序,然后返回到该应用程序来立即重现该问题。我还注意到,当它不再出现在缓存进程列表中时,“oncreate”也会被调用,因此看起来应用程序已关闭,并且本质上是在重新创建 Activity 。然而,奇怪的是,之前设置为某个值的进度条突然被重新创建,进度设置为 100%。进展
现在,如果重新创建它们,它们的进度肯定应该默认为 0 吗?我什至尝试将它们创建时的进度设置为 0(即 myprogbar.setProgress=(0) 但这似乎没有什么区别。
我怎样才能...
a.确保进度条在创建时设置为0?
b.在 oncreate 期间检查应用程序是否已经在运行并销毁它的所有以前版本?
c.确保应用程序不会从缓存进程中删除?
d.解决问题的其他方法。
我很感激我可以创建一个循环,在进度条创建后对其进行循环并重置它们,但我试图了解进度条在哪里获得 100% 的值以及这与应用程序有何关系被推出缓存进程列表。
非常感谢
最佳答案
不幸的是,我从来没有弄清楚为什么会发生这种情况,但为了防止其他人遇到同样的问题,我找到了解决方法。
基本上,我设置了一个计时器来循环显示屏幕上的所有进度条,并在 Activity 加载时重置它们。不优雅也不聪明,但它有效。
final Timer myTimer = new Timer();
myTimer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
ProgressBar temppb;
for (int i = 0; i < (totalnumberofprogressbars); i++) {
temppb = (ProgressBar) findViewById(i + 1);
temppb.setProgress(0);
}
}
});
myTimer.cancel();
}
}, 50,50);
关于java - 从缓存中清除应用程序时出现的应用程序异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25872563/