0

我需要将onStop()资源释放为位图和 bgms,并且我面临onStop()执行时间过长的问题。所以在最坏的情况下,用户会退出一个活动并重新进入它(可以说在不到 1 秒的时间内),所以活动运行onCreate()然后它继续调用onStop()(我想它是从用户退出它时调用的) )。

很明显,onCreate()正在加载资源,但onStop()调用之后立即释放它们,导致空指针异常。

任何可能的解决方案?

4

3 回答 3

0

如果使用onStart()回调方法创建所有释放的资源,onStop()问题就解决了。

你得到NullPointerException是因为你认为onCreate ()被称为但它不是。
OnStop ()可以在不Activity销毁的情况下调用,在这种情况下onStart ()调用而不是onCreate(),因此,如果在 中创建资源onStart(),这将阻止NullPointerException.
请参阅Android 文档

于 2013-07-20T20:25:59.940 回答
0

这很骇人听闻,但是您可以计算出通常需要多长时间才能释放资源并设置一个计时器onCreate(),等待onStop()确定完成,然后重新加载任何空资源。几乎可以肯定有一个更好的解决方案,但如果没有别的,那么你可以这样做。

于 2013-07-20T19:46:30.860 回答
0

尝试了这个解决方案,但这不是我打算这样做的方式。

由于我得到的错误是由于延迟调用正在释放每个加载的资源NullPointerException这一事实引起的,我只是添加一个块来捕获并调用一个函数来重新加载资源onStop()onCreate()try-catchNullPointerException

于 2013-07-20T20:04:28.210 回答