-2

Getting this error when my phone goes idle mode and the activity is open and I try to use the app again. It crashes sometimes and sometimes it works

I am calling few methods in onResume() method of the activity, such as, getting json from webservice, inserting into sqlite database and getting back then showing in a listview. I have been getting this error for 7 days but not able to resolve it. I applied handler in onResume method and delayed for 50 milliseconds, but still I get this error. Need help.

    @Override
protected void onResume() {
    super.onResume();

    DATA.allMessages = db.getAllMessages(prefs.getString("id", ""), DATA.selectedUserId);


    handler.postDelayed(new Runnable() {

        @Override
        public void run() {

            if(DATA.issendUrl) {

                DATA.issendUrl = false;

                db.insertMessages(prefs.getString("id", ""), DATA.urlMsgText, DATA.selectedUserId, "", "0", "1", "0","1", "");
                DATA.lastInsertedMsgID = db.getLastInsertedID();


                if(isConnectedToInternet()) {


                    if(!(makeJsonStringFromArray().equals("")) || makeJsonStringFromArray() != null) {

                        uploadUnsentMsgs(makeJsonStringFromArray());
                        //                      Toast.makeText(activity, "unread msgs sent", 0).show();
                        DATA.allMessages = db.getAllMessages(prefs.getString("id", ""), DATA.selectedUserId);
                        if(DATA.allMessages != null) {

                            chatAdapter = new ChatAdapter(activity);
                            lvChattMsgs.setAdapter(chatAdapter);
                        }
                    }


                    if(DATA.lastInsertedMsgID != -1) {

                        sendMsg(DATA.urlMsgText, prefs.getString("id", ""), DATA.selectedUserId, DATA.lastInsertedMsgID, "url");
                    }

                }

                DATA.allMessages = db.getAllMessages(prefs.getString("id", ""), DATA.selectedUserId);

                if(DATA.allMessages != null) {

                    chatAdapter = new ChatAdapter(activity);
                    lvChattMsgs.setAdapter(chatAdapter);

                }


            }

            else if(DATA.isFwdMsg) {

                DATA.isFwdMsg = false;

                db.insertMessages(prefs.getString("id", ""), DATA.selectedImagePath, DATA.selectedUserId, "", "0", "1", "0","0", "");
                DATA.lastInsertedMsgID = db.getLastInsertedID();


                if(isConnectedToInternet()) {

                    if(DATA.lastInsertedMsgID != -1) {

                        sendMsg(DATA.selectedImagePath, prefs.getString("id", ""), DATA.selectedUserId, DATA.lastInsertedMsgID, "msg");
                    }

                }

                DATA.allMessages = db.getAllMessages(prefs.getString("id", ""), DATA.selectedUserId);

                if(DATA.allMessages != null) {

                    chatAdapter = new ChatAdapter(activity);
                    lvChattMsgs.setAdapter(chatAdapter);

                }


            }

            if(DATA.isImageCaptured) {


                if(isConnectedToInternet()) {

                    db.insertMessages(prefs.getString("id", ""), DATA.imagePath, DATA.selectedUserId,  "","0", "1", "1","0", "");
                    DATA.lastInsertedMsgID = db.getLastInsertedID();

                    if(DATA.lastInsertedMsgID != -1) {

                        UploadMsgImage uploadMsgImage = new UploadMsgImage(activity);

                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

                            uploadMsgImage.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "");

                        } else {
                            uploadMsgImage.execute("");

                        }


                        DATA.isImageCaptured =false;

                        DATA.allMessages = db.getAllMessages(prefs.getString("id", ""), DATA.selectedUserId);
                        if(DATA.allMessages != null) {

                            chatAdapter = new ChatAdapter(activity);
                            lvChattMsgs.setAdapter(chatAdapter);
                        }

                    }

                }//if net available...
                else {

                    DATA.isImageCaptured =false;
                    //DATA.imagePath = "";

                    db.insertMessages(prefs.getString("id", ""), DATA.imagePath, DATA.selectedUserId,  "","0", "1", "1","0", "");

                    DATA.allMessages = db.getAllMessages(prefs.getString("id", ""), DATA.selectedUserId);
                    if(DATA.allMessages != null) {

                        chatAdapter = new ChatAdapter(activity);
                        lvChattMsgs.setAdapter(chatAdapter);
                    }
                }

            }

            DATA.allMessages = db.getAllMessages(prefs.getString("id", ""), DATA.selectedUserId);

            if(DATA.allMessages != null) {

                chatAdapter = new ChatAdapter(activity);
                lvChattMsgs.setAdapter(chatAdapter);
            }

        }
    }, 80);

}
Saraz
  • 524
  • 7
  • 16

1 Answers1

0

it seem your activity crashing sometimes in on resume operations. therefore resume() is not completing So you are getting Mention fatal error. Just make sure your OnResume method's code not throwing any exception in all conditions. then you wont get this error.

khurram
  • 1,362
  • 13
  • 24
  • I have checked for it. given try catch block where i thought it can give exception. Still it happens. – Saraz Oct 16 '14 at 11:32