更新我的应用程序时,我有时会收到此错误。
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);
答案 0 :(得分:0)
如果你一次又一次地连接到服务器(我假设是因为 retrieveBulletin 方法),请在再次尝试之前尝试等待(Thread.sleep(TIME_OUT);)一两秒钟。有最大尝试次数。如果你已经尝试了10次但仍未收到回复或任何有效回复,请尝试处理这种情况而不是永远尝试。如果你不这样做,最终会导致堆栈空间不足,你最终会收到你收到的错误。
根据您的评论,类似的情况 - 糟糕的递归调用而不处理最糟糕的情况。
答案 1 :(得分:0)
我相信你的verifyBulletin
和retrieveBulletin
正在互相呼唤无限次。确保他们没有互相打电话,或者如果他们互相打电话,那么他们就会有结束条件。如果满足结束条件,则不要调用其他方法。