代码优化 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通信)

MySQL虚拟列及json优化

Android如何连接MySQL数据库

PHP从Android将JSON数据插入MySQL数据库