gpt4 book ai didi

java - Async Task 是否有某种形式的缓存系统?

转载 作者:行者123 更新时间:2023-11-30 04:53:48 24 4
gpt4 key购买 nike

我正在用 Android(Java) 编写代码来计算它可以在 30 秒内识别的最大质数。当程序第一次执行时,它在 30 秒内计算了 35k+ 个素数。但是在不关闭应用程序的情况下,当我第二次运行它时,结果增加到 80k+。任何人都知道为什么会发生这种情况?异步任务

private class CalculatePrime extends AsyncTask<Long,Long,Long>
{
long starTime=0,count=1;

@Override
protected Long doInBackground(Long... objects) {
starTime=System.currentTimeMillis();
long nos=3;
while(System.currentTimeMillis()-starTime<=objects[0])
{
long i;
for(i=3;i<=nos/2;i+=2)
{
if(nos%i==0)
break;
}
if(i>nos/2)
{
count++;
publishProgress(new Long(0));
}
nos+=2;
}
return new Long(0);
}

@Override
protected void onProgressUpdate(Long... values) {
score.setText(""+count);
}
}

主函数调用

new calculatePrime().execute(new Long(30*1000));

更新所以我在 Android 6 Marshmallow 中测试了这个应用程序,令我惊讶的是,代码是一致的。它在随后的运行中给出了 6k+ 的结果。该问题仅与 Android 9 相关。因此,任何人都知道 Android 6.0 和 9.0 之间可能发生的变化可能导致这种行为的任何线索吗?

最佳答案

把这个 score.setText(""+count); onPostExecute() 方法,因为当 doingbackground() 任务完成时,结果转到 onPostExecute 方法并显示总计数。

关于java - Async Task 是否有某种形式的缓存系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59573107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com