gpt4 book ai didi

php - 如何将我的 Android 应用程序连接到我的 PHP/MySQL 后端?

转载 作者:行者123 更新时间:2023-11-29 04:08:20 25 4
gpt4 key购买 nike

我有两个关于Android和PHP/MySQL连接的问题。

  1. 如果我使用的是版本 3 及更高版本,那么我是否需要使用单独的线程在后台进行连接?

  2. 是否有必要使用 JSON 获取答案?

我写的代码没有使用多线程和JSON,但它只适用于2.3及以上版本。我在 4.0 和 4.2 上试过,但没有任何反应。

最佳答案

您的第一个问题:

是的。 始终在后台执行网络任务或任何其他需要时间的任务。执行此操作的最佳方法是使用 AsyncTaskThis article AsyncTask 比我解释得更好,去读吧。

与您的问题的评论相反,您应该使用单独线程的原因并不是因为您会得到 NetworkOnMainThreadException 否则。这是因为这是一种更好的做法,因为它可以确保您的应用在执行网络任务时不会卡顿。主任务还在您的 Activity 中处理动画等,因此在主线程上执行任何任务 X 时间,意味着应用停顿 X 时间。

你的第二个问题:

不,没有必要使用 JSON。不过,您确实希望通过网页上的脚本(无论是 PHP、Ruby、Python 等)来路由请求,而不是直接与数据库交互。这样,您可以限制您的应用能够执行的操作,以及潜在黑客能够执行的操作。

就像我说的,没有必要使用 JSON。但是,出于几个原因,它是从服务器获取信息到应用程序的最广泛接受的方式。最普遍的 2 个是:

  1. 低开销:JSON 在您的数据之间使用非常少的“额外”字符,例如,与具有长标签等的 XML 相反;
  2. 易用性:Android 内置了 JSON 工具供您使用,这使您可以非常轻松地使用 JSON。例如,以这段 JSON 为例:

[{'id':11,'name':'Bob'},{'id':42,'name':'Sally'}]

要在您的 Android 应用中解析它,您可以:

public List<Person> parseJson(String jsonString) {

// Initialize the ArrayList we're gonna store the people in
List<Person> people = new ArrayList<Person>();

try {
// Convert the JSON from text (String) to a JSON Array, so we can
// more easily traverse it
JSONArray rootArray = new JSONArray(jsonString);

// loop through the prople in the JSON Array
for(int i=0; i<rootArray.length();

// Get the object at position i from the JSON Array
JSONObject workingObj = rootArray.get(i);

// Do what you have to to store the data. In this example,
// I'm using a class called 'Person' which has setters for Id and Name
Person p = new Person();

// Get all the info you need from the JSON Object. As you can see
// in the JSON snippet, we have an integer with key 'id' and a
// string with key 'name'
p.setId(workingObj.getInt("id"));
p.setName(workingObj.getString("name"));

// add the Person p to the ArrayList
people.add(p);
}
} catch (JSONException e) {
// properly handle all exceptions!
}
return people;
}

如您所见,所有解析都已为您完成,您只需适应数据结构即可。

关于php - 如何将我的 Android 应用程序连接到我的 PHP/MySQL 后端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21407814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com