问题描述
我StdString ShowLockScreen()
在这个函数中有一个函数我调用activateViewController
函数显示一些用户必须输入 PIN 的 UI,就在调用activateViewController
函数之后我想锁定所有进程,直到用户输入他的 PIN 并在打开的 UI 上按 OK 按钮。下面你可以看到我尝试的代码
iOS 中的源代码
StdString ShowLockScreen()
{
// Create a lock.
NSLock* theLock = [[NSLock alloc] init];
// Create a UI in which user must enter his PIN.
PinLockController* controller = [[PinLockController alloc] initWithStyle:PinLockTypeSet];
// Set delegate.
controller.delegate = m_Context;
// !!! Here I show a UI and just after that I lock my lock in order code stop executing there.
[controller activateViewController:nil];
@synchronized(theLock) {
[theLock lock];
}
NSLog(@"User in UI unlock the lock");
}
我希望我的代码停止然后我打电话[theLock lock];
,然后我会打电话 [theLock unlock]; 从我的 UI 和代码将继续执行。但它在我的情况下不起作用。
Android中的源代码
我在 Android 中编写了类似的应用程序,这里是代码。我想在 iOS 中写同样的东西,但我找不到解决方案
Intent intent = new Intent(mCtx, SoftPinActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
SharedObject lock = new SharedObject("");
int lockId = SharedObject.acquireLockId(lock);
Logger.i(TAG, "lockId = " + lockId);
intent.putExtra(SharedObject.LOCK_ID, lockId);
intent.putExtra(SoftPinActivity.UI_ID, style);
synchronized (lock) {
mCtx.startActivity(intent);
try {
Logger.i(TAG, "lock.wait()...");
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
Logger.i(TAG, "InterruptedException");
}
}
Logger.i(TAG, "lock.wait()...done");
SharedObject.releaseLockId(lockId);
String pin = lock.object();
研究
我想我必须使用
NSCondition* condLock = [[NSCondition alloc] init];
[condLock wait];
和
[condLock signal];
但是如何在我的代码中使用它?