主活动实例有时会抛出运行时异常" LinphoneActivity尚未实例化"

时间:2015-05-12 09:27:13

标签: android runtimeexception linphone

我使用Linphone库创建一个应用程序,我有一个代码在MainActivity中抛出异常,如下所示:

private static MainActivity instance;

public static final boolean isInstanciated() {
    return instance != null;
}

public static final MainActivity instance() {
    if (instance != null) {
        return instance;
    }
    throw new RuntimeException("LinphoneActivity not instantiated yet");
}

方法实例将用于另一个活动(IncomingCallActivity和Contact Data Activity)

如果有来电的话,将启动来电活动

if (!LinphoneManager.getInstance().acceptCallWithParams(mCall, params)) {
            // the above method takes care of Samsung Galaxy S
            Toast.makeText(this, R.string.couldnt_accept_call, Toast.LENGTH_LONG).show();
        } else {
            if (!MainActivity.isInstanciated()) {
                return;
            }
            final LinphoneCallParams remoteParams = mCall.getRemoteParams();
            if (remoteParams != null && remoteParams.getVideoEnabled() && LinphoneManager.getInstance().isAutoAcceptCamera()) {
                MainActivity.instance().startVideoActivity(mCall);
            } else {
                MainActivity.instance().startIncallActivity(mCall);
            }
        }

如果用户选择联系人菜单

,将启动ContactDataActivity
private void doCall(String number) {
        Log.d(TAG, "try to call here: " + number);
        if (Account.isPrepaidRegistered()) {
            MainActivity.instance().requestToCall(number);
        } else {
            Intent intent = new Intent(ContactDataActivity.this, PrepaidRegisterActivity.class);
            startActivity(intent);
        }
    }

其中每个活动都需要调用MainActivity实例来调用MainActivity中的方法来请求调用或调用。

运行应用程序时,logcat将显示:

  

java.lang.RuntimeException:LinphoneActivity尚未实例化

这是正常的,还是我的代码有问题?

1 个答案:

答案 0 :(得分:0)

永远不要尝试自己实例化一个活动,android框架会为你做这个,如果你想让你的Activity在你的意图过滤器中使用lauchmodes而不是单例设计模式,那么lauchMode上有很多很好的教程{{3 }},herehere