【问题标题】:Why VOLLEY retrieves the same data with differing parameters?为什么 VOLLEY 检索具有不同参数的相同数据?
【发布时间】:2020-01-02 16:01:01
【问题描述】:

volley 遇到了一些奇怪的问题:

当我第一次使用参数a 检索数据时,没有什么不好的。但是,即使参数a 已更改,所有下一个响应都将与第一个响应相同。重新运行所有提到的应用程序结果。可能是什么问题?

截击码:

private void select() {
        Response.Listener<String> listener = new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
            //someCodes    
            }
        };
        Response.ErrorListener errorListener = new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
            //someCodes
            }
        };
        StringRequest request = new StringRequest(Request.Method.POST, "link", listener, errorListener) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("key", "value");
                return params;
            }
        };
        RequestQueue queue = Volley.newRequestQueue(activity.this);
        queue.add(request);
    }

`

另外,我的服务器主机也发生了一些变化;考虑到php 版本适合设计android web 服务的问题,由于这样的日志:"stagefright/1.2 (Linux;Android 4.4.4)" 在下载mp3 文件时可以解决另一种问题。会不会和凌空问题有关?

php代码:

<?php
$a = $_REQUEST['key'];
try {
    $connection = new PDO("mysql:host=name;dbname=db", "sq", "aabsabss");
    $connection->exec('set names utf8');
    $selectQuery = "SELECT * FROM  table WHERE cul = '$a'";
    $result = $connection->query($selectQuery);
    $outputArray = array();
    if ($result->rowCount()) {
        $rows = $result->fetchAll(PDO::FETCH_ASSOC);
        foreach ($rows as $resultArray) {
            $item = array();
            $item['a'] = $resultArray['a'];
            $item['b'] = $resultArray['b'];
            $item['c'] = $resultArray['c'];   
            $outputArray[] = $item;
        }
        echo json_encode($outputArray);
    }
} catch (Exception $exception) {
    echo $exception;
}

感谢您的帮助。

【问题讨论】:

  • 能发一下volley request和php源码让我看看吗?
  • 凌空版是什么?以及您将其放置在项目中的方式或位置?
  • 我无法发布,因为它很长而且问题也已关闭,您使用的库是最新的。而且它也在工作,我只是希望您将 JSON 替换为 StringRequest 并在服务器端 $item['a'] 与 UNDERSCORE 与 b 与 c 连接。试一试,并使用 request.setShouldCache(false );
  • 首先你尝试使用 request.setShouldCache(false);如果不起作用,则使用带有相同标志的简单 StringRequest 并通过 echo 从 PHP 请求字符串
  • Android 正式来自 google,因为随着时间的推移,android 一直在变化,他们也在改变 volley,因为你和我都是开发人员,volley 不会打扰操作系统每次都提出新的请求,它只是告诉您和我,是的请求正在成功,并阻止了凌空类、android 类和网络类以及 android 电话类和 android 微处理器的一些代码执行,因为这就是为什么现在一天电池性能上升的原因。让开发者头疼,明天我会回答,因为它会帮助将来的人

标签: java php android android-volley response


【解决方案1】:

参考:根据要求,我正在回答这个问题,以便将来如果有人遇到这个线程或问题,它可能会对他们有所帮助。

为什么 VOLLEY 用不同的参数检索相同的数据?

答案并不像问题那么短,因为在过去的 8-10 年里,谷歌图书馆和谷歌安卓随着时间的推移发生了很大的变化。答案大多是理论上的,至少会给开发人员一些见解。

1) 我想在启动时打印 hello world

现在世界不像语言 C,你可以随时编译 hello world。是的,我理解开发人员需要 hello world 协助作为一切的启动点,然后他们在其上构建概念和整个架构。但是系统资源不适合这种愚蠢的事情。系统资源和电池性能是现在最重要的因素。

2) 那我什么时候可以打印hello world作为起点呢?

当您的应用正在积极运行并且仅对用户开放时。即使那样,也有限制和适当的发展战略。

3) 出了什么问题? 图书馆现在启用了人工智能,它知道这是一个重复的任务,而且每次都使用以前的结果,所以它永远不会给大多数系统功能带来压力,并节省系统的时间和资源。

4) 需要什么?

request.setShouldCache(false);

5) 现在问题解决了吗?

BIG NO. 方法仍然需要改进。

6) 那我该如何改进呢?

避免像孩子一样发送网络请求。一直在请求。示例:如果您想接收有关您的应用用户是否已注册的信息,请每天保留您自己的数据库。记得今天你有没有要求?如果要求今天不再要求。明天它只会请求一次,如果已经请求,那么明天它将永远不会再请求。超越单个开发人员的限制对其进行优化。所以你必须有 1000 名开发人员..!!

7) 为什么问题还没有解决?

看,你不是一个特别的人,android os 不是为了从你的代码中获取命令并随时运行它..!!它永远不会运行。

8) 但是每次我请求时,android 都会运行这段代码? 因为你在模拟器上。但是市场上没有安卓。 99% 是经过修改的 ROM,它们是 colorOs、OxygenOS、FunTouch OS、MUIUI……如果应用程序来自 google(地图、商业、游戏商店)或来自 facebook、whatsapp 或 twitter,它们只允许应用程序在后台运行。一旦从最近删除中删除,您的应用将永远不会运行。

9) 我能做什么 如果您不是大企业大亨,那就什么都没有。

【讨论】:

    猜你喜欢
    • 2018-03-24
    • 1970-01-01
    • 2014-06-03
    • 2012-06-24
    • 2015-07-31
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多