我已经在我的安卓应用中集成了pjsua2。当我发送短信时,应用程序会崩溃。它并非每次都会崩溃,而是随机发生(每发送10条消息中会出现一次)。
我的代码如下:
public void sendInstantMessage(String number, String msgBody) {
String buddy_uri = "<sip:" + number + "@" + mPref.getString(PREF_SIPSERVER, "") + ">";
Log.e(TAG, "sendInstantMessage ==== "+buddy_uri);
BuddyConfig bCfg = new BuddyConfig();
bCfg.setUri(buddy_uri);
bCfg.setSubscribe(false);
MyBuddy im = new MyBuddy(bCfg);
SendInstantMessageParam prm = new SendInstantMessageParam();
prm.setContent(msgBody);
prm.setContentType("text/plain; charset=utf-8");
try {
im.create(account, bCfg);
boolean valid1 = im.isValid();
Log.e(TAG, "valid1 ======= "+valid1);
im.sendInstantMessage(prm);
} catch (Exception e) {
Log.e(TAG, "sendInstantMessage ==== "+e);
e.printStackTrace();
return;
}
}
根据logcat日志,我需要调用pj_thread_register()函数。但是在endpoint中我已经有了libRegisterThread()方法,因此我按照以下方式使用它。
MyApp.ep.libRegisterThread("SipApi");
日志如下:
../src/pj/os_core_unix.c:692: pj_thread_this: assertion "!"Calling pjlib from unknown/external thread. You must " "register external threads with pj_thread_register() " "before calling any pjlib functions."" failed
myBuddy.delete();
移动到finally
子句中,因为当你在异常退出时,对象没有被删除。 - Adrian C.