0

私は今日このアプリに取り組んでいますが、コードの何が問題なのか理解できないようです。

エミュレーターとMotorolaBravo(2.2)でアプリを正常に実行できますが、ラウンドを終了して[リセット]ボタンを押すと、プログラムが機能しなくなったというエラーが突然表示されます。これを修正する方法はありますか?

これがlogcatエラーです(赤いセクション全体):

12-20 23:01:27.636: E/StrictMode(585): null
12-20 23:01:27.636: E/StrictMode(585): android.app.ServiceConnectionLeaked: Service     com.android.exchange.ExchangeService has leaked ServiceConnection     com.android.emailcommon.service.ServiceProxy$ProxyConnection@40ceb270 that was originally     bound here
12-20 23:01:27.636: E/StrictMode(585):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
12-20 23:01:27.636: E/StrictMode(585):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
12-20 23:01:27.636: E/StrictMode(585):  at android.app.ContextImpl.bindService(ContextImpl.java:1418)
12-20 23:01:27.636: E/StrictMode(585):  at android.app.ContextImpl.bindService(ContextImpl.java:1407)
12-20 23:01:27.636: E/StrictMode(585):  at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
12-20 23:01:27.636: E/StrictMode(585):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
12-20 23:01:27.636: E/StrictMode(585):  at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
12-20 23:01:27.636: E/StrictMode(585):  at com.android.emailcommon.service.AccountServiceProxy.getDeviceId  (AccountServiceProxy.java:116)
12-20 23:01:27.636: E/StrictMode(585):  at com.android.exchange.ExchangeService.getDeviceId(ExchangeService.java:1249)
12-20 23:01:27.636: E/StrictMode(585):  at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1856)
12-20 23:01:27.636: E/StrictMode(585):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
12-20 23:01:27.636: E/StrictMode(585):  at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
12-20 23:01:27.636: E/StrictMode(585):  at android.os.AsyncTask$2.call(AsyncTask.java:287)
12-20 23:01:27.636: E/StrictMode(585):  at java.util.concurrent.FutureTask.run(FutureTask.java:234)
12-20 23:01:27.636: E/StrictMode(585):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
12-20 23:01:27.636: E/StrictMode(585):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
12-20 23:01:27.636: E/StrictMode(585):  at java.lang.Thread.run(Thread.java:856)

これが私のソースファイルです:

package com.example.rockpaperscissorlizardspock;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
import android.view.View.OnClickListener;

public class rockpaperscissorlizardspock extends Activity {
    /** Called when the activity is first created. */

    private TextView resultText;
    private Button play, reset;
    private ImageButton scissors, paper, rock, lizard, spock;
    private int paperimg, paper_pressedimg, scissorsimg, scissors_pressedimg,     rockimg, rock_pressedimg, lizardimg, lizard_pressedimg, spockimg, spock_pressedimg;
        private ImageView compSciss, compPaper, compRock, compLiz, compSpock;
    Random rand = new Random();
    int compChoice = 0;
    String pChoice ="";
    String cChoice = "";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Initialize();
    }

    /** initialize all of the components*/
     private void Initialize()
    {
        play = (Button) findViewById(R.id.button1);
        reset = (Button) findViewById(R.id.button2);
        resultText = (TextView) findViewById(R.id.resultText);
        lizard = (ImageButton) findViewById(R.id.imageButton4);
        spock = (ImageButton) findViewById(R.id.imageButton5);
        scissors = (ImageButton) findViewById(R.id.imageButton3);
        paper = (ImageButton) findViewById(R.id.imageButton2);
        rock = (ImageButton) findViewById(R.id.imageButton1);
        compSciss = (ImageView) findViewById(R.id.computerScissors);
        compPaper = (ImageView) findViewById(R.id.computerPaper);
        compRock = (ImageView) findViewById(R.id.computerRock);
        spockimg = R.raw.spock;
        spock_pressedimg = R.raw.spock_pressed;
        lizardimg = R.raw.lizard;
        lizard_pressedimg = R.raw.lizard_pressed;
        paperimg = R.raw.paper;
        paper_pressedimg = R.raw.paper_pressed;
        scissorsimg = R.raw.scissors;
        scissors_pressedimg = R.raw.scissors_pressed;
        rockimg = R.raw.rock1;
        rock_pressedimg = R.raw.rock1_pressed;

        /**set the button Listeners*/
        play.setOnClickListener(new OnClickListener(){
            public void onClick(View arg0){
                play();
            }
        });

        reset.setOnClickListener(new OnClickListener(){
             public void onClick(View arg0){
                paper.setImageResource(paperimg);

                 rock.setImageResource(rockimg);
                scissors.setImageResource(scissorsimg);
                lizard.setImageResource(lizardimg);
                spock.setImageResource(spockimg);
                compPaper.setImageResource(paperimg);
                compRock.setImageResource(rockimg);
                compSciss.setImageResource(scissorsimg);
                compLiz.setImageResource(lizardimg);
                compSpock.setImageResource    (spockimg);               
                pChoice = "";
                cChoice = "";
                play.setEnabled(false);
                reset.setEnabled(true);
                scissors.setEnabled(true);
                paper.setEnabled(true);
                rock.setEnabled(true);
                lizard.setEnabled(true);
                spock.setEnabled(true);
                resultText.setText("");
            }
        });

        /*
         * Declaring what happens when specific choices are made.
         */

        scissors.setOnClickListener(new OnClickListener(){
             public void onClick(View arg0){    
                     scissors.setImageResource(scissors_pressedimg);
                    paper.setImageResource(paperimg);
                    rock.setImageResource(rockimg);
                    spock.setImageResource(spockimg);
                    lizard.setImageResource(lizardimg);
                    pChoice = "S";
                    play.setEnabled(true);
             }
         });

         paper.setOnClickListener(new OnClickListener(){
            public void onClick(View arg0){
                    paper.setImageResource(paper_pressedimg);
                    scissors.setImageResource(scissorsimg);
                    spock.setImageResource(spockimg);
                    rock.setImageResource(rockimg);
                    lizard.setImageResource(lizardimg);
                    pChoice = "P";
                    play.setEnabled(true);
            }
         });

        rock.setOnClickListener(new OnClickListener(){
            public void onClick(View arg0){
                rock.setImageResource(rock_pressedimg);
                scissors.setImageResource(scissorsimg);
                paper.setImageResource(paperimg);
                spock.setImageResource(spockimg);
                lizard.setImageResource(lizardimg);
                pChoice = "R";
                play.setEnabled(true);
            }
        });

        lizard.setOnClickListener(new OnClickListener(){
             public void onClick(View arg0){
                 lizard.setImageResource(lizard_pressedimg);
                 spock.setImageResource(spockimg);
                 rock.setImageResource(rockimg);
                 scissors.setImageResource(scissorsimg);
                 paper.setImageResource(paperimg);
                 pChoice = "L";
                 play.setEnabled(true);
            }
         });

        spock.setOnClickListener(new OnClickListener(){
            public void onClick(View arg0){
                spock.setImageResource(spock_pressedimg);
                lizard.setImageResource(lizardimg);
                rock.setImageResource(rockimg);
                scissors.setImageResource(scissorsimg);
                paper.setImageResource(paperimg);
                pChoice = "SP";
                play.setEnabled(true);
            }
        });

    }

    /**The method that chooses the computer's move and compares
     *  to the player's move.
     */
    public void play()
    {
        compChoice = rand.nextInt(5);

        if(compChoice == 0)
        {
            cChoice = "R";
            compRock.setImageResource(rock_pressedimg);
            }
        else if(compChoice == 1){
            cChoice = "P";
            compPaper.setImageResource(paper_pressedimg);
        }       
         else if(compChoice == 2)
        {
            cChoice = "S";
            compSciss.setImageResource(scissors_pressedimg);
            }
        else if(compChoice == 3)
           {
            cChoice = "L";
             compLiz.setImageResource(lizard_pressedimg);
            }
        else if(compChoice == 4)
       { 
       cChoice = "SP";
       compSpock.setImageResource(spock_pressedimg);
       }

    check();
}

/**
 * Compares the Computer's and the Player's moves.
 */
public void check()
{
    if(pChoice == "R") //Rock
    {
        if(cChoice == "R")
            resultText.setText("Draw");

        else if(cChoice == "P")
            resultText.setText("You Lose");

        else if(cChoice == "S")
            resultText.setText("You Win");

        else if(cChoice == "L")
            resultText.setText("You Win");

        else if(cChoice == "SP")
            resultText.setText("You Lose");
    }

    else if(pChoice == "P") //Paper
    {
        if(cChoice == "R")
            resultText.setText("You Win");

        else if(cChoice == "P")
            resultText.setText("Draw");

        else if(cChoice == "S")
            resultText.setText("You Lose");

        else if(cChoice == "SP")
            resultText.setText("You Win");

        else if(cChoice == "L")
            resultText.setText("You Lose");


    }

    else if(pChoice == "S") //Scissors
    {
        if(cChoice == "R")
            resultText.setText("You Lose");

        else if(cChoice == "P")
            resultText.setText("You Win");

        else if(cChoice == "S")
            resultText.setText("Draw");

        else if(cChoice == "L")
            resultText.setText("You Win");

        else if(cChoice == "SP")
            resultText.setText("You Lose");


    }

    else if(pChoice == "L") //Lizard
    {
      if(cChoice == "R")
        resultText.setText("You Lose");

      else if(cChoice == "L")
        resultText.setText("Draw");

      else if(cChoice == "SP")
        resultText.setText("You Win");

      else if(cChoice == "S")
        resultText.setText("You Lose");

      else if(cChoice == "P")
        resultText.setText("You Win");
    }

    else if(pChoice == "SP") //Spock
    {
        if(cChoice == "SP")
            resultText.setText("Draw");

        else if(cChoice == "L")
            resultText.setText("You Lose");

        else if(cChoice == "S")
            resultText.setText("You Win");

        else if(cChoice == "P")
            resultText.setText("You Lose");

        else if(cChoice == "R")
            resultText.setText("You Win");

    }

    gameOver();
}


/**
 * Runs at the end of each round. Disables all of the buttons
 * except for the reset button.
 */
public void gameOver()
{
    play.setEnabled(false);
    scissors.setEnabled(false);
    rock.setEnabled(false);
    paper.setEnabled(false);
    spock.setEnabled(false);
    lizard.setEnabled(false);
    reset.setEnabled(true);
}
4

1 に答える 1

0

これでトリッキーなエラーが com.android.exchange.ExchangeService has leaked...
発生しています。コードとは関係なく、この種のエラーが発生することがあります。
これを行うことをお勧めしますが、うまくいくかどうかは保証できません。

  1. エミュレーターの場合は、新しい AVD を作成して、そこでテストしてみてください。
  2. お使いのデバイスについては、アプリケーションをアンインストールしてから再試行してください。再度発生する場合は、最初の試行で発生したかどうかを教えてください。
于 2012-12-21T01:18:09.997 に答える