我正在处理在Android设备上必须计算出大量用于SHA的迭代的问题,而不会影响用户体验。困难在于,由于我一直支持Android 2.x,因为最近几代手机之间的计算能力差异巨大,我无法设置硬盘和快速轮数。并且这个数字太低而且不安全,或者它太高而且需要使用低端手机太长时间来计算。
我试图在第一次启动时使用一个线程来计算增加轮数所需的时间,以便在每个手机的基础上找到一个好的数字(ergo从基线数量开始,如果时间低于阈值,增加数字并检查时间是否仍然低于阈值。重复直到超过阈值)。问题在于我使用系统时间来查看计算最终需要多长时间,但是上下文切换会人为地夸大时间值并迫使分析在电话的cpu功率的一小部分被提取之前提前结束。
有没有办法解决这个问题,而不是强迫用户等待,因为我首次在主UI线程上运行此分析?
编辑:至少我认为上下文切换正在搞砸时间。当我在主UI线程上运行它时,迭代分析代码按预期运行,并且SHA散列花费的时间没有奇怪的小问题。当在一个单独的线程上运行时,它对于迭代分析的前几个步骤来说没问题,然后突然会在哈希花费的时间内经历一次巨大的打嗝(大部分时间),并且过早地结束该方法。 / p>
答案 0 :(得分:0)