代码优化 Android json 和 mysql
Posted
技术标签:
【中文标题】代码优化 Android json 和 mysql【英文标题】:Code optimization Android json and mysql 【发布时间】:2018-03-12 11:24:42 【问题描述】:mysql 数据库存储日期 minDate (01/09/2017) 和 maxDate (01/10/2017)。 这些日期需要在应用程序中接收并写入相应的 CalendarView 属性。 请帮助优化和修复代码。 下面是代码。
public class RecordActivity extends AppCompatActivity
HttpResponse httpResponse;
Button button;
TextView textView;
CalendarView mCalendarView;
JSONObject jsonObject = null;
String StringHolder = "";
// Добавление URL-адреса HTTP-сервера в строковую переменную.
String HttpURL = "http://localhost/date_min_max.php";
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_record);
textView = (TextView) findViewById(R.id.textView);
mCalendarView = (CalendarView) findViewById(R.id.calendarView);
// Вызов метода GetDataFromServerIntoTextView для установки данных JSon MySQL в TextView.
new GetDataFromServerIntoTextView(RecordActivity.this).execute();
// Объявление метода GetDataFromServerIntoTextView с помощью AsyncTask.
public class GetDataFromServerIntoTextView extends AsyncTask<Void, Void, Void>
// Объявление CONTEXT.
public Context context;
public GetDataFromServerIntoTextView(Context context)
this.context = context;
@Override
protected void onPreExecute()
super.onPreExecute();
@Override
protected Void doInBackground(Void... arg0)
HttpClient httpClient = new DefaultHttpClient();
// Добавление HttpURL к моему объекту HttpPost.
HttpPost httpPost = new HttpPost(HttpURL);
try
httpResponse = httpClient.execute(httpPost);
StringHolder = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
catch (ClientProtocolException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
try
// Передача переменной владельца строки в JSONArray.
JSONArray jsonArray = new JSONArray(StringHolder);
jsonObject = jsonArray.getJSONObject(0);
String minDateString = jsonArray.getJSONObject(0).getString("minDate");
String maxDateString = jsonArray.getJSONObject(0).getString("maxDate");
// Парсим дату
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
Date minDate = formatter.parse(minDateString);
Date maxDate = formatter.parse(maxDateString);
// Получаем время
long minDateTime = minDate.getTime();
long maxDateTime = maxDate.getTime();
// Как-то инициализируете и работаете с этим
CalendarView dpd;
CalendarView dp = mCalendarView;
// Устанавливаем даты
dp.setMinDate(minDateTime);
dp.setMaxDate(maxDateTime);
catch (JSONException e)
e.printStackTrace();
catch (Exception e)
// TODO Автоматически генерируемый блок catch
e.printStackTrace();
return null;
protected void onPostExecute(Void result)
try
// Добавление строки JSOn в textview после завершения загрузки.
textView.setText(jsonObject.getString("minDate"));
catch (JSONException e)
// TODO Автоматически генерируемый блок catch
e.printStackTrace();
我通过执行形成 JSON 的 php 从 mysql 接收日期。 如果您能在我的任务中提供任何帮助,我将不胜感激!
【问题讨论】:
“修复代码”:有什么问题? dp.setMinDate(minDateTime); - 以红色突出显示。方法 setMaxDate 必须从 UI 或 UI 线程调用,目前推断线程是 workerless... (Ctrl+F1) 【参考方案1】:您可以使用 androids JsonArrayRequest
代替您的 Async 类。这是 Volley 的一部分:https://developer.android.com/training/volley/request.html
我认为这是标准 Json 请求的推荐方式。
【讨论】:
我需要从mysql中获取日期并写入CalendarView.MinDate【参考方案2】:如果您希望评估和审查您的代码,可以将其发布到此 Stack Exchange 站点。 Code Review Stack Exchange
【讨论】:
以上是关于代码优化 Android json 和 mysql的主要内容,如果未能解决你的问题,请参考以下文章
如何优化使用 PHP 或 Mysql 或 Laravel 将 12K 的 JSON 插入数据库
Android Studio 实现实现学生信息的查询 -源代码 三(Servlet + 连接MySql数据库) (JSON通信)
Android Studio 实现实现学生信息的查询 -源代码 三(Servlet + 连接MySql数据库) (JSON通信)