0

こんにちは、
私のアプリでは、スレッドを一時停止するためにThread.sleep(100)を使用しようとしていますが、CPUの使用量を減らすためにバックグラウンドで使用していますが、再度開くとフリーズします。アプリを再度開いたときに、それが呼び出されていないこと
に気付きました。onResume

なぜ何かアイデアはありますか?

public void onPause() {
        pause = true;
        Log.d("mSTATE","THREADPAUSE");
    }

public void onResume() {
    pause = false;
        running = true;
       Log.d("mSTATE","THREADRESUME");
    }
public void run() {

    while(running){
         while(pause && running){
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
         }

         while (!pause && running) {
             Canvas c = null;
             try {
                 c = sHolder.lockCanvas(null);
                 synchronized (sHolder) {
                     doDraw(c);
                     powerUps();
                 }
             } finally {
                 if (c != null) {
                     sHolder.unlockCanvasAndPost(c);
                 }
             }
         }
    }
         Log.d("mState","EndofRun");              
}     
4

1 に答える 1

2

スレッドをスリープ状態にすると、UIスレッドもブロックされるため、アプリケーションがフリーズします。

最高のパフォーマンスを得るには、Androidの方法でスレッドを確認する必要があります。

http://developer.android.com/resources/articles/painless-threading.html

于 2012-05-05T19:50:02.107 に答える