解锁后的Android黑屏

时间:2016-02-23 15:26:52

标签: android android-activity android-lifecycle

在锁定设备屏幕后,我无法恢复应用的活动。

以下是典型情况:

1. App is running.
2. Lock device.
3. Unlock device.
4. Instead of returning to running app, it shows a black screen.

我检查了活动生命周期是如何运行的,看起来这就是它解锁时发生的事情:

1. Create
2. Start
3. Resume
4. Pause

为什么它会暂停?我确信这很简单,但是我还在学习Android,我非常困惑。感谢您提供的任何帮助!

编辑:

我认为我没有做任何与众不同的事情,但这是我正在使用的基本代码......

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Log.i("Java", "Create");

    // Initialize NDK audio properties here

    // Initialize the Content View
    setContentView(R.layout.activity_main);

    // Setup toolbar
    Toolbar myToolbar = (Toolbar) findViewById(R.id.toolBar);
    setSupportActionBar(myToolbar);

    // Start thread
    thread = new Thread() {
        public void run() {
            setPriority(Thread.MAX_PRIORITY);
            // Audio Thread is running here
        }
    };
    thread.start();
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
}

@Override
protected void onStart() {
    super.onStart();
}

@Override
protected void onPause() {
    super.onPause();
    if (thread != null) {
        try {
            thread.join();
        }
        catch (InterruptedException e) {
            // e.printStackTrace();
        }
        thread = null;
    }
}

@Override
protected void onResume() {
    super.onResume();
}

@Override
protected void onStop() {
    super.onStop();
}

2 个答案:

答案 0 :(得分:1)

尝试此操作(它会指示您的应用保存状态):

protected void onSaveInstanceState(Bundle icicle) {
    icicle.putLong("param", 1);
    super.onSaveInstanceState(icicle);
}

答案 1 :(得分:0)

我不是线程专家。但是这里似乎你在暂停时阻止你的线程。 thread.join导致当前线程(在本例中为ui线程)暂停执行,直到线程终止。