在锁定设备屏幕后,我无法恢复应用的活动。
以下是典型情况:
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();
}
答案 0 :(得分:1)
尝试此操作(它会指示您的应用保存状态):
protected void onSaveInstanceState(Bundle icicle) {
icicle.putLong("param", 1);
super.onSaveInstanceState(icicle);
}
答案 1 :(得分:0)
我不是线程专家。但是这里似乎你在暂停时阻止你的线程。 thread.join导致当前线程(在本例中为ui线程)暂停执行,直到线程终止。