0

更新我的应用程序时,我会收到此错误,只是有时。

java.lang.StackOverflowError

at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:354) at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:146) at it.veneto.arpa.controller.Controller.verifyBulletin(Controller.java:377) at it.veneto.arpa.controller.Controller.retrieveBulletin(Controller.java:509) at it.veneto.arpa.controller.Controller.verifyBulletin(Controller.java:394) at it.veneto.arpa.controller.Controller.retrieveBulletin(Controller.java:509) at it.veneto.arpa.controller.Controller.verifyBulletin(Controller.java:394) at it.veneto.arpa.controller.Controller.retrieveBulletin(Controller.java:509) at it.veneto.arpa.controller.Controller.verifyBulletin(Controller.java:394)

在第 377 行有:

SharedPreferences prefs = context.getSharedPreferences(PREFERENCES, Context.MODE_PRIVATE);

4

2 回答 2

0

我相信你verifyBulletinretrieveBulletin彼此无限次地互相呼唤。确保他们没有互相呼叫,或者如果他们互相呼叫,则存在结束条件。如果满足结束条件,则不要调用其他方法。

于 2013-08-19T19:42:25.957 回答
0

如果您一次又一次地连接到服务器(我假设是因为retrieveBulletin方法),请尝试等待 (Thread.sleep(TIME_OUT);) 一两秒钟,然后再重试。有最大尝试次数。假设您已经尝试了 10 次,但仍然没有收到响应或任何有效响应,请尝试处理这种情况,而不是永远尝试。如果你不这样做,这最终会导致堆栈空间不足,你最终会收到你收到的错误。

根据您的评论,类似的情况 - 糟糕的递归调用没有处理最坏的情况。

于 2013-08-19T19:04:36.610 回答