为什么线程无法在API 5.0或更高版本中运行?

时间:2016-02-04 10:17:11

标签: android timertask

这里我想在5秒后调用一个类。所以,我创建了一个类,我的json数据就在那里。

但问题是当我在API 5.0或更高版本中运行我的应用程序时崩溃,但同样的应用程序在5.0以下运行它可以正常工作。

这是我调用类的线程方法。

public void callAsynchronousTask() {
    final Handler handler = new Handler();
    timer = new Timer();
    TimerTask doAsynchronousTask = new TimerTask() {
        @Override
        public void run() {
        handler.post(new Runnable() {
            public void run() {
                 cnt++;
                 if (!IsStopUpdateMethod) {
                     try{
                        new SummaryCardJson().execute();//here i am going to get an error
                     }
                     catch (IllegalStateException e){
                             e.printStackTrace();
                     }
                 else {
                       timer.cancel();
                       finish();
                 }
//            } catch (Exception e) {
//               // TODO Auto-generated catch block
//            }
            }
         });
       }
    };
    timer.schedule(doAsynchronousTask, 0, 5000); //execute in every 50000 ms
}

此处summarycardjson扩展了AsyncTastk类。

这是我在SummaryCard活动

下定义的SummaryCardJson类
private class SummaryCardJson extends AsyncTask<String,String,String>{

        @Override
        protected String doInBackground(String... params) {

            jsonStr=new CallAPI().GetResponseGetMethod(url1);
            try{
                JSONObject obj=new JSONObject(jsonStr);

                JSONObject data=obj.getJSONObject("data");
                JSONObject card=data.getJSONObject("card");
                JSONObject now=card.getJSONObject("now");

                JSONObject teams=card.getJSONObject("teams");
                JSONArray teams_arr=teams.names();

                if(card.has("man_of_match")){
                    if(!card.getString("man_of_match").isEmpty() || !card.getString("man_of_match").isEmpty()){
                        mom="MOM: "+card.getString("man_of_match");
                    }
                }
                if(card.has("day")){
                    day=card.getString("day");
                }
                if(card.has("status_overview")) {
                    result_status=card.getString("status_overview");
                    if(card.getString("status").equals("completed")){
                        JSONObject msgs=card.getJSONObject("msgs");
                        if(msgs.has("info")) {
                            status_overview = msgs.getString("info");
                        }
                    }
                    else {
                        if(card.getString("format").equals("test")) {
                            status_overview = "Day:" + day + " " + card.getString("status_overview");
                        }
                        else{
                            if(card.getString("status_overview").equals("in_play")){
                                status_overview =card.getString("status_overview").replace("_"," ");
                            }
                            if(card.getString("status_overview").equals("innings_break")){
                                status_overview =card.getString("status_overview").replace("_"," ");
                            }
                        }
                    }
                }

                setInning=now.getString("innings");
                player_strik=now.getString("striker")+"`"+now.getString("nonstriker");
                strike_bowler=now.getString("bowler");


                JSONObject teamObj=null;
                JSONObject teambObj=null;
                for(int i=0;i<teams_arr.length();i++){
                    if(now.getString("batting_team").equals(teams_arr.getString(i))){
                        teamObj=teams.getJSONObject(teams_arr.getString(i));
                    }
                    if(now.getString("bowling_team").equals(teams_arr.getString(i))){
                        teambObj=teams.getJSONObject(teams_arr.getString(i));
                    }
                }


                if(!now.isNull("req")){
                    JSONObject req=now.getJSONObject("req");
                    if(req.has("target_runs") && req.has("target_balls")) {
                        required = teamObj.getString("short_name") + " need " + req.getString("target_runs") + " runs in" + req.getString("target_balls") + " balls to win";
                        status_overview = required;
                    }
                }


                //SET INNING SCORE
                JSONObject innings=card.getJSONObject("innings");
                JSONArray ining_arr=innings.names();

                for(int i=0;i<ining_arr.length();i++){
                    if(ining_arr.getString(i).equals("b_1")){
                        ining_score=innings.getJSONObject(ining_arr.getString(i));
                        if(ining_score.has("runs")){
                            if(ining_score.getString("runs").equals("0")) {
                                team_score="";
                            }
                            else{
                                team_score = "-"+ining_score.getString("runs") + "/" + ining_score.getString("wickets");
                            }
                        }
                    }
                    else if(ining_arr.getString(i).equals("a_1")){
                        ining_bowlling=innings.getJSONObject(ining_arr.getString(i));
                        if(ining_bowlling.has("runs")){
                            if(ining_bowlling.getString("runs").equals("0")) {
                                bowling_team_score = "";
                            }
                            else{
                                bowling_team_score = "-"+ining_bowlling.getString("runs") + "/" + ining_bowlling.getString("wickets");
                            }
                        }
                    }
                }

                if(card.getString("format").equals("test")){
                    for(int i=0;i<ining_arr.length();i++) {
                        if (ining_arr.getString(i).equals("b_2")){
                            ining_score_test=innings.getJSONObject(ining_arr.getString(i));
                            if(ining_score_test.has("runs")){
                                if(ining_score_test.getString("runs").equals("0")){
                                    second_test_batting="0";
                                }
                                else {
                                    second_test_batting = " & " + ining_score_test.getString("runs") + "/" + ining_score_test.getString("wickets");
                                }
                            }
                        }
                        else if(ining_arr.getString(i).equals("a_2")){
                            ining_bowling_test=innings.getJSONObject(ining_arr.getString(i));

                            if(ining_bowling_test.has("runs")){
                                if(ining_bowling_test.getString("runs").equals("0")){
                                    second_test_bowling="";
                                }
                                else {
                                    second_test_bowling = " & " + ining_bowling_test.getString("runs") + "/" + ining_bowling_test.getString("wickets");
                                }
                            }
                        }
                    }
                }

                try {
                    if (teamObj.has("short_name")) {
                        if(now.getString("batting_team").equals("b")) {
                            batting_team = teamObj.getString("short_name") + team_score + second_test_batting;
                        }
                        if(now.getString("batting_team").equals("a")){
                            batting_team = teamObj.getString("short_name") + bowling_team_score + second_test_bowling;
                        }
                    }
                    if(now.has("run_rate")) {
                        crr = "CRR" + ":" + now.getString("run_rate");
                    }
                    if(teambObj.has("short_name")) {
                        if(now.getString("bowling_team").equals("b")) {
                            bowling_team = teambObj.getString("short_name") + team_score + second_test_batting;
                        }
                        if(now.getString("bowling_team").equals("a"))
                        {
                            bowling_team = teambObj.getString("short_name") + bowling_team_score + second_test_bowling;
                        }
                    }
                }
                catch (NullPointerException e){
                    e.printStackTrace();
                }

                //SET INNING SCORE COMPLETED

                parts=player_strik.split("`");
                JSONObject player=card.getJSONObject("players");
                JSONArray player_arr=player.names();

//                if(parts[0]==null && parts[1]==null) {
//                    Log.e("PLAYER STRIKE",""+player_strik);
                player_info = new ArrayList<>();
                for (int i = 0; i < parts.length; i++) {
                    for (int j = 0; j < player_arr.length(); j++) {
                        if (parts[i].equals(player_arr.getString(j))) {
                            player_info.add(player.getJSONObject(player_arr.getString(j)));
                        }
                    }
                }
//                }

                if(strike_bowler!=null) {
                    strike_list = new ArrayList<>();
                    for (int i = 0; i < player_arr.length(); i++) {
                        if (strike_bowler.equals(player_arr.getString(i))) {
                            strike_list.add(player.getJSONObject(player_arr.getString(i)));
                        }
                    }
                }

                //RECENT OVERS START

                flag=1;
                JSONArray recent_over = now.getJSONArray("recent_overs_str");
                lst_balls_first = new ArrayList<>();
                lst_over_first = new ArrayList<>();

                lst_balls_two = new ArrayList<>();
                lst_over_two = new ArrayList<>();

                lst_over_three = new ArrayList<>();
                lst_balls_three = new ArrayList<>();
                hashMap = new LinkedHashMap<>();

                try {
                    over_length=recent_over.length();
                    for (int a = 0; a < recent_over.length(); a++) {
                        if (a == 0) {
                            JSONArray recent_over_one = recent_over.getJSONArray(a);
                            for (int b = 0; b < recent_over_one.length(); b++) {
                                if (b == 0) {
                                    lst_over_first.add(recent_over_one.getInt(b));
                                }
                                if (b != 0) {
                                    JSONArray over_first = recent_over_one.getJSONArray(b);
                                    for (int c = 0; c < over_first.length(); c++) {
                                        lst_balls_first.add(over_first.getString(c));
                                    }
                                }
                            }
                        }
                        if (a == 1) {
                            JSONArray recent_over_two = recent_over.getJSONArray(a);
                            for (int b = 0; b < recent_over_two.length(); b++) {
                                if (b == 0) {
                                    lst_over_two.add(recent_over_two.getInt(b));
                                }
                                if (b != 0) {
                                    JSONArray over_two = recent_over_two.getJSONArray(b);
                                    for (int c = 0; c < over_two.length(); c++) {
                                        lst_balls_two.add(over_two.getString(c));
                                    }
                                }
                            }
                        }
                        if (a == 2) {
                            JSONArray recent_over_three = recent_over.getJSONArray(a);
                            for (int b = 0; b < recent_over_three.length(); b++) {
                                if (b == 0) {
                                    lst_over_three.add(recent_over_three.getInt(b));
                                }
                                if (b != 0) {
                                    JSONArray over_three = recent_over_three.getJSONArray(b);
                                    for (int c = 0; c < over_three.length(); c++) {
                                        lst_balls_three.add(over_three.getString(c));
                                    }
                                }
                            }
                        }
                    }
                    if(over_length==1){
                        hashMap.put(lst_over_first.get(0), lst_balls_first);
                    }
                    if(over_length==2){
                        hashMap.put(lst_over_first.get(0), lst_balls_first);
                        hashMap.put(lst_over_two.get(0), lst_balls_two);
                    }
                    if(over_length==3){
                        hashMap.put(lst_over_first.get(0), lst_balls_first);
                        hashMap.put(lst_over_two.get(0), lst_balls_two);
                        hashMap.put(lst_over_three.get(0), lst_balls_three);
                    }


                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
            catch (JSONException e){
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);

            txtbatting_teamName.setText(batting_team);
            txtBowling_teamName.setText(bowling_team);
            txtCrr.setText(crr);
            status.setText(status_overview);
            if(mom.isEmpty()){
                layout_mom.setVisibility(View.GONE);
                txtMom.setVisibility(View.GONE);
            }
            else{
                txtMom.setVisibility(View.VISIBLE);
                layout_mom.setVisibility(View.VISIBLE);
                txtMom.setText(mom);
            }
}

上面的类是我的调用两个适配器类,它没有在帖子中声明。

这是一个错误

02-04 15:44:22.456 2208-2208/com.angelnx.cricvilla.cricvilla E/AndroidRuntime: FATAL EXCEPTION: main
                                                                               Process: com.angelnx.cricvilla.cricvilla, PID: 2208


java.lang.VerifyError: Rejecting class com.angelnx.cricvilla.cricvilla.SummaryCard$SummaryCardJson because it failed compile-time verification (declaration of 'com.angelnx.cricvilla.cricvilla.SummaryCard$SummaryCardJson' appears in /data/app/com.angelnx.cricvilla.cricvilla-1/base.apk)
                                                                               at com.angelnx.cricvilla.cricvilla.SummaryCard$2$1.run(SummaryCard.java:236)
                                                                               at android.os.Handler.handleCallback(Handler.java:739)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                               at android.os.Looper.loop(Looper.java:135)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5221)
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at java.lang.reflect.Method.invoke(Method.java:372)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

请帮我解决这个错误。

0 个答案:

没有答案