2012-07-02 21 views
6

Tôi đang sử dụng AndEngine để tạo một trò chơi liên quan đến rất nhiều hình ảnh động. Đó là không phù hợp khi, nhưng cuối cùng tôi nhận được một tin nhắn trong con mèo đăng nhập (threadid = 3: phản ứng với tín hiệu 3) và các trò chơi bị đóng băng. Lỗi này nghĩa là gì? Tôi đã thu hẹp trong mã nơi nó xảy ra (nó được đánh dấu):Tại sao tôi nhận được: threadid = 3: phản ứng với tín hiệu 3 và đóng băng trò chơi (AndEngine)?

private void levelComplete(){ 
     runOnUiThread(new Runnable() { 
      public void run() { 
       Toast.makeText(TestGFX5Activity.this, "Level Complete", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     Log.e("Level Complete","Going to reset values"); 
     //Reset values 
     level++; 
     fillerCount = (originalNumberOfFillers + level - 1); 
     areaFilled=0; 
     fillAreaPercent = 0; 

     //Rid scene of sprites 
     for(int x=0;x<=fillerNum;x++){ 
      filler[x].body.setActive(false); 
      scene.detachChild(filler[x].sprite); 
      filler[x].active=false; 
      filler[x].scale=originalSpriteScale; 
      filler[x].body.setUserData("inactive"); 
     } 
     levelText.setText("Level: "+Integer.toString(level)); 
     fillersLeftText.setText("Balls left: "+Integer.toString(fillerCount)); 
     percentFilledText.setText("0%"); 
     fillerNum = -1; 

     Log.e("Level Complete","values reset"); 

     randx = random.nextInt(650) + 25; 
     randy = random.nextInt(400) + 25; 
     randix = random.nextInt(10); 
     randiy = random.nextInt(10); 
     if(randix%2==0) 
      ix = 5; 
     else 
      ix = -5; 
     if(randiy%2==0) 
      iy = 5; 
     else 
      iy = -5; 

     Log.e("Level Complete","Creating destroyer"); //This line executes 
     destroyer = new Ball(randx, randy, destroyerTR, getVertexBufferObjectManager(), ix, iy); //Code breaks here (*sometimes*) 
     Log.e("Level Complete","complete"); //This line does not 
    } 

Điều kỳ lạ nhất là các mã hoạt động như 4/5 lần (tôi thường có thể lên cấp 3 hoặc 4 lần, và lên đến 9 lần) trước khi nó bị treo. Tôi không chắc điều gì gây ra nó. Ai có ý tưởng gì không?

+0

Tôi gặp phải vấn đề tương tự. Làm thế nào để bạn giải quyết nó? – Ricardo

Trả lời

6

Khi điều kiện ANR xảy ra, Thời gian chạy Android gửi tín hiệu 3 đến tất cả các máy ảo dalvik để khiến chúng đổ dấu vết ngăn xếp của chúng để tạo báo cáo ANR. Kết xuất của dấu vết strack sẽ khiến dalvik tạm dừng ứng dụng của bạn.

Tôi đề nghị bạn xem trên logcat (sự kiện và bộ đệm chính) cho ANR. Ngoài ra kiểm tra/dữ liệu/anr cho các dấu vết ANR để kiểm tra những gì gây ra vấn đề.

1

Bằng cách kiểm tra tệp /data/anr/traces.txt, bạn có thể tìm thấy có hàng tá chủ đề hay không, đó có thể là lý do khiến đơn đăng ký của bạn bị đóng băng.

Các vấn đề liên quan