Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Thread.sleep()暂停和恢复应用程序_Android_Android Lifecycle - Fatal编程技术网

Android 使用Thread.sleep()暂停和恢复应用程序

Android 使用Thread.sleep()暂停和恢复应用程序,android,android-lifecycle,Android,Android Lifecycle,嗨, 在我的应用程序中,我试图使用Thread.sleep(100)暂停我的线程,而它的后台是为了使用更少的cpu,但当我打开它时它会冻结。 我意识到当我重新打开应用程序时,onResume没有被调用 你知道为什么吗 public void onPause() { pause = true; Log.d("mSTATE","THREADPAUSE"); } public void onResume() { pause = false;

嗨,
在我的应用程序中,我试图使用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");              
}     

当您将线程置于睡眠状态时,也会阻塞UI线程,从而导致应用程序冻结

您需要以Android方式检查线程以获得最佳性能


Surface View线程是一个UI线程。如果您用另一个线程等中断它,您只需冻结UI。您建议我如何实现暂停和恢复?