gpt4 book ai didi

java - Thread.currentThread().interrupt() 在 Android 中不工作

转载 作者:搜寻专家 更新时间:2023-11-01 09:40:58 24 4
gpt4 key购买 nike

<分区>

onIncomingCall() 是第三方库 pjsip 中类的重写方法。当使用 SIP 调用电话时调用此方法。不知何故,只有当调用应答代码在同一方法内或在同一方法内调用时,此方法才有可能应答调用。但我希望在用户按下按钮时接听电话。我创建了一个回叫,并让用户在来电时按下按钮,但如果在 onIncomingCall() 方法之外调用,则调用应答代码不起作用。所以我决定将 Thread.sleep(10000) 放在 onIncomingCall() 中,当用户按下按钮时,我想取消这个线程,以便调用应答代码可以被执行。

我使用了 Thread.currentThread().interrupt()Thread.sleep 根本没有被取消。我编写了一个单独的 Activity 来测试此功能但它失败了,这意味着 Thread.currentThread.interrupt 根本不适合我。实现这一目标的最佳选择是什么?请更新我..我真的很挣扎。

@Override
public void onIncomingCall(OnIncomingCallParam prm) {

onIncomingCallParam = prm;

try {
Thread.sleep(10000);
} catch(InterruptedException ie) {
ie.printStackTrace();
}

answerCall();
}

更新:

我用下面的方法解决了这个问题

resetThread();
while (testThread) {
try {
Log.d(TAG,"testThread true");
Thread.sleep(1000);
} catch (InterruptedException ie) {
ie.printStackTrace();
}

}

Log.d(TAG,"Call Answering code");


private void resetThread() {
Thread newThread = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(10000);
testThread = false;
} catch (InterruptedException ie) {
ie.printStackTrace();
}
}
});
try {
newThread.start();
} catch (Exception ie) {
ie.printStackTrace();
}
}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com