android - 数据库连接出现 asynctask 错误

标签 android mysql android-studio android-asynctask forceclose

嗨,我是 android 初学者,所以我希望你能详细帮助我

我使用 AsyncTask 连接到 MySQL 数据库,一切都很好,连接良好,我从数据库获取数据,但问题是当我关闭数据库(数据库位于 wamp 上)时,我的应用程序强制关闭,并给出此错误:java.util.concurrent.timeoutException 我将把AsyncTask代码放在下面

private void get_banners(final int pages) {
    AsyncHttpPost post = new AsyncHttpPost("http://192.168.1.102/soton/new.php");
    post.setTimeout(5000);


    MultipartFormDataBody body = new MultipartFormDataBody();
    body.addStringPart("City", MainActivity.sp.getString("City", ""));
    body.addStringPart("Page", String.valueOf(pages));
    body.addStringPart("Cate", "all");
    post.setBody(body);


    AsyncHttpClient.getDefaultInstance().executeString(post, new AsyncHttpClient.StringCallback() {
        @Override
        public void onCompleted(final Exception e, AsyncHttpResponse source, final String result) {
            if (e != null) {
                MainActivity.activity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(MainActivity.activity, e.toString(), Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                        mSwipeRefreshLayout.setRefreshing(false);
                    }
                });
            }


            if (!result.equals("")) {
                MainActivity.activity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {

                        //you can toast the result here
                        //Toast.makeText(MainActivity.activity, result,Toast.LENGTH_LONG).show();
                        if (page == 0) {
                            hash_all.clear();
                        }
                        items.clone();
                        try {

                            JSONArray jsonArray = new JSONArray(result);
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject object = jsonArray.getJSONObject(i);
                                HashMap<String, Object> hash_add = new HashMap<>();
                                hash_add.put("ID", object.getString("ID"));
                                hash_add.put("Username", object.getString("Username"));
                                hash_add.put("Title", object.getString("Title"));
                                hash_add.put("Description", object.getString("Description"));
                                hash_add.put("Price", object.getString("Price"));
                                hash_add.put("Tell", object.getString("Tell"));
                                hash_add.put("Email", object.getString("Email"));
                                hash_add.put("City", object.getString("City"));
                                hash_add.put("Cate", object.getString("Cate"));
                                hash_add.put("Img1", object.getString("Img1"));
                                hash_add.put("Img2", object.getString("Img2"));
                                hash_add.put("Img3", object.getString("Img3"));
                                hash_add.put("Date", object.getString("Date"));
                                hash_all.add(hash_add);
                                items = new String[hash_all.size()];
                            }

                            ad.notifyDataSetChanged();
                            mSwipeRefreshLayout.setRefreshing(false);

                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                });
            }
            else {
                Toast.makeText(MainActivity.activity,result,Toast.LENGTH_LONG).show();
            }

        }
    });
}

更新:堆栈跟踪

FATAL EXCEPTION: AsyncServer
              Process: com.morteza.newproject, PID: 3211
              java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
                  at com.morteza.newproject.Frag_banners_all$3.onCompleted(Frag_banners_all.java:145)
                  at com.morteza.newproject.Frag_banners_all$3.onCompleted(Frag_banners_all.java:130)
                  at com.koushikdutta.async.http.AsyncHttpClient.invokeWithAffinity(AsyncHttpClient.java:527)
                  at com.koushikdutta.async.http.AsyncHttpClient.access$800(AsyncHttpClient.java:51)
                  at com.koushikdutta.async.http.AsyncHttpClient$7.run(AsyncHttpClient.java:534)
                  at com.koushikdutta.async.AsyncServer.lockAndRunQueue(AsyncServer.java:740)
                  at com.koushikdutta.async.AsyncServer.runLoop(AsyncServer.java:758)
                  at com.koushikdutta.async.AsyncServer.run(AsyncServer.java:658)
                  at com.koushikdutta.async.AsyncServer.access$800(AsyncServer.java:44)
                  at com.koushikdutta.async.AsyncServer$14.run(AsyncServer.java:600)

W/System.err: java.util.concurrent.TimeoutException W/System.err:位于 com.koushikdutta.async.http.AsyncHttpClient$2.run(AsyncHttpClient.java:246) W/System.err:位于 com.koushikdutta.async.AsyncServer.lockAndRunQueue(AsyncServer.java:740) W/System.err:位于 com.koushikdutta.async.AsyncServer.runLoop(AsyncServer.java:758) W/System.err:位于 com.koushikdutta.async.AsyncServer.run(AsyncServer.java:658) W/System.err:位于 com.koushikdutta.async.AsyncServer.access$800(AsyncServer.java:44) W/System.err:位于 com.koushikdutta.async.AsyncServer$14.run(AsyncServer.java:600) 应用程序终止。

最佳答案

问题解决了,我通过在代码中仅添加一个 else 来解决它,当前代码如下

private void get_banners(final int pages) {
    AsyncHttpPost post = new AsyncHttpPost("http://192.168.1.102/soton/new.php");
    post.setTimeout(5000);



    MultipartFormDataBody body = new MultipartFormDataBody();
    body.addStringPart("City", MainActivity.sp.getString("City", ""));
    body.addStringPart("Page", String.valueOf(pages));
    body.addStringPart("Cate", "all");
    post.setBody(body);

    try {


        AsyncHttpClient.getDefaultInstance().executeString(post, new AsyncHttpClient.StringCallback() {
            @Override
            public void onCompleted(final Exception e, AsyncHttpResponse source, final String result) {
                if (e != null) {
                    MainActivity.activity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(MainActivity.activity, "server is offline", Toast.LENGTH_LONG).show();
                            e.printStackTrace();
                            mSwipeRefreshLayout.setRefreshing(false);
                        }
                    });

                }
                //this is the answer
                else {


                    if (!result.equals("")) {
                        MainActivity.activity.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {

                                //you can toast the result here
                                //Toast.makeText(MainActivity.activity, result,Toast.LENGTH_LONG).show();
                                if (page == 0) {
                                    hash_all.clear();
                                }
                                items.clone();
                                try {

                                    JSONArray jsonArray = new JSONArray(result);
                                    for (int i = 0; i < jsonArray.length(); i++) {
                                        JSONObject object = jsonArray.getJSONObject(i);
                                        HashMap<String, Object> hash_add = new HashMap<>();
                                        hash_add.put("ID", object.getString("ID"));
                                        hash_add.put("Username", object.getString("Username"));
                                        hash_add.put("Title", object.getString("Title"));
                                        hash_add.put("Description", object.getString("Description"));
                                        hash_add.put("Price", object.getString("Price"));
                                        hash_add.put("Tell", object.getString("Tell"));
                                        hash_add.put("Email", object.getString("Email"));
                                        hash_add.put("City", object.getString("City"));
                                        hash_add.put("Cate", object.getString("Cate"));
                                        hash_add.put("Img1", object.getString("Img1"));
                                        hash_add.put("Img2", object.getString("Img2"));
                                        hash_add.put("Img3", object.getString("Img3"));
                                        hash_add.put("Date", object.getString("Date"));
                                        hash_all.add(hash_add);
                                        items = new String[hash_all.size()];
                                    }

                                    ad.notifyDataSetChanged();
                                    mSwipeRefreshLayout.setRefreshing(false);

                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
                        });
                    } else {
                        Toast.makeText(MainActivity.activity, result, Toast.LENGTH_LONG).show();
                    }
                }

            }
        });

    }catch (Exception e){
        e.printStackTrace();
    }
}

关于android - 数据库连接出现 asynctask 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46308997/

相关文章:

android - "Fetching JS Bundle"非常慢

mysql - 如何在一天内查找复合键的唯一行

MySql 首先按特定字段值排序不起作用

android - ConstraintLayout 不显示最后一个 child

java - 在 Mint 16 上安装 Android Studio 时出现问题

android - 如何在 TagHandler.handleTag(...) 中使用 XMLReader

android - 当 Lollipop 版本的应用程序关闭时,电话状态的 BroadCastReceiver 不起作用

android - libmp3lame.a 中 undefined symbol _init_xrpow_core_init

php - 从 id_numbers 列但从多行获取唯一的 ID 号 MySQL

android - 如何在 Android Studio 的命令行中执行 android 应用程序?