更新应用时出现SharedPreferences错误

时间:2013-08-19 18:46:12

标签: java android sharedpreferences

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

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);

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我相信你的verifyBulletinretrieveBulletin正在互相呼唤无限次。确保他们没有互相打电话,或者如果他们互相打电话,那么他们就会有结束条件。如果满足结束条件,则不要调用其他方法。