android while while使用解析服务器等待服务器响应

时间:2014-12-09 17:00:51

标签: android parsing while-loop response server

我开发了一款基于Android回合制的游戏,到目前为止我可以做出第一步,但是当我希望用户等待第二个玩家玩应用程序崩溃时。 我试图做的是当玩家完成他的动作时我会调用这样的函数:

public void TheThread()
    {
        boolean fy=false;


                while(!fy)
                {
                    if(CheckMove2())
                        fy=true;
                }
    }

checkmove2函数连接解析表并检查是否有转弯并返回布尔值。 我相信这不是正确的方法,谢谢你的帮助。

编辑:

ChecKmove2() function:
private boolean CheckMove2() {

         fx=false;

        ParseQuery query = new ParseQuery("serverturn");
        query.whereEqualTo("Receiver", Sender);
        query.getFirstInBackground(new GetCallback() {
            public void done(ParseObject updatePO, ParseException ParseError) {

                if(ParseError == null){
         fx=true;
         String objID;
                   x=updatePO.getInt("x");
                   y=updatePO.getInt("y");
                   try {
                    updatePO.delete();
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
///here comes the game algorithm.
if(fx)
           return true;
       return false;
}

编辑:应用程序没有崩溃它只是停止并提醒:“应用程序没有响应”然后询问我是否要等待或关闭应用程序.Checkmove功能完美运行我检查了其他设备,问题是在while循环中使用此checkmove函数,以便用户等待对手转动。

2 个答案:

答案 0 :(得分:0)

您的应用程序崩溃了,因为在这种情况下,您已经导致无限循环(如果没有其他移动等待)。因此操作系统很可能会强制关闭您的应用程序,因为它认为它变得没有响应。

你做得最好的是:

  1. 使用AyncTask创建一个后台服务,以检查其他玩家是否按特定间隔移动(可能是10-15分钟?)
  2. 一旦发现移动。使用可通过Intent
  3. 链接到您的应用的通知向玩家发送警报

    作为旁注,您应该始终使用后台线程/异步任务等与网络通信。

答案 1 :(得分:0)

在你的位置我会做下一步:

在您正在等待的对象的解析后的cloudCode afterSave或beforeSave中,在更新所需对象时向您的应用发送套接字消息。例如,使用pubnub.com

我认为这是一个不错的解决方案,但是运行一些循环检查逻辑似乎非常不专业。

一般来说,它的工作原理如下:

  1. 两名玩家订阅了一个频道

  2. 当一个人完成移动时,从云代码发送消息到此 信道

  3. 在您的应用中抓住它。
  4. 该消息可以从解析触发更新,也可以包含所需的数据本身。