Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AndroidHttpClient创建并从不关闭_Android_Nuxeo - Fatal编程技术网

AndroidHttpClient创建并从不关闭

AndroidHttpClient创建并从不关闭,android,nuxeo,Android,Nuxeo,我的Android客户端有问题。 nuxeo上下文包含一个上下文和一个AndroidHttpClient 我试着尽可能靠近,但只有方法。关机(),这会阻止我稍后在我的应用程序中询问我的nuxeo服务器 我怎样才能关上它 叠印 05-20 11:46:06.945: E/AndroidHttpClient(24191): Leak found 05-20 11:46:06.945: E/AndroidHttpClient(24191): java.lang.IllegalStateExceptio

我的Android客户端有问题。 nuxeo上下文包含一个上下文和一个AndroidHttpClient

我试着尽可能靠近,但只有方法。关机(),这会阻止我稍后在我的应用程序中询问我的nuxeo服务器

我怎样才能关上它

叠印

05-20 11:46:06.945: E/AndroidHttpClient(24191): Leak found
05-20 11:46:06.945: E/AndroidHttpClient(24191): java.lang.IllegalStateException: AndroidHttpClient created and never closed
05-20 11:46:06.945: E/AndroidHttpClient(24191): at android.net.http.AndroidHttpClient.<init>(AndroidHttpClient.java:158)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at android.net.http.AndroidHttpClient.newInstance(AndroidHttpClient.java:144)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at org.nuxeo.ecm.automation.client.android.AndroidAutomationClient.<init>(AndroidAutomationClient.java:115>)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at org.nuxeo.android.context.NuxeoContext.getNuxeoClient(NuxeoContext.java:168)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at org.nuxeo.android.context.NuxeoContext.<init>(NuxeoContext.java:110)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at org.nuxeo.android.context.NuxeoContext.<init>(NuxeoContext.java:82)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at com.example.androidnuxeo.MainActivity.onCreate(MainActivity.java:90)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at android.app.Activity.performCreate(Activity.java:4562)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at android.app.ActivityThread.access$600(ActivityThread.java:128)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at android.os.Handler.dispatchMessage(Handler.java:99)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at android.os.Looper.loop(Looper.java:137)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at android.app.ActivityThread.main(ActivityThread.java:4514)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at java.lang.reflect.Method.invokeNative(Native Method)
05-20 11:46:06.945: E/AndroidHttpClient(24191): at java.lang.reflect.Method.invoke(Method.java:511)
NuxeoContext:

public synchronized AndroidAutomationClient getNuxeoClient() {
    while (nuxeoClient != null && shuttingDown) {
        try {
            wait(100);
        } catch (InterruptedException e) {
            // Do nothing
        }
    }
    if (nuxeoClient == null || nuxeoClient.isShutdown()) {
        shuttingDown = false;
       nuxeoClient = new AndroidAutomationClient(
               serverConfig.getAutomationUrl(), androidContext,
                sqlStateManager, blobStore, networkStatus, serverConfig);
        Log.i(TAG, "new Nuxeo client " + nuxeoClient);
        if (Log.isLoggable(TAG, Log.DEBUG)) {
            Log.d(TAG, "Call stack: ", new Exception());
        }
    }
    return nuxeoClient;
}
Connection.getSession:

public class Connection extends AsyncTask<NuxeoContext, Void, Session> {

Context ctx;
static Session session;

protected Session doInBackground(NuxeoContext... params) {

    if(session == null || session.getClient().getBaseUrl() == null) {
        NuxeoContext nctx= params[0];
        session = nctx.getSession();    

        System.err.println("create connexion");
    }
    else {
        System.err.println("connexion already open");
    }

   return session;
}

public static Session getSession() {
    if(session == null || session.getClient() == null) {
        System.err.println("No connexion");
    }
    return session;
}
}
公共类连接扩展了异步任务{
上下文ctx;
静态会话;
受保护的会话doInBackground(NuxeoContext…参数){
if(session==null | | session.getClient().getBaseUrl()==null){
NuxeoContext nctx=params[0];
session=nctx.getSession();
System.err.println(“创建连接”);
}
否则{
System.err.println(“连接已打开”);
}
返回会议;
}
公共静态会话getSession(){
if(session==null | | session.getClient()==null){
System.err.println(“无连接”);
}
返回会议;
}
}
我将Nuxeo连接器集成为一个库,我不使用片段,只使用活动。

什么意思

如果我不关闭它,我的应用程序将无法运行

您可以调用
org.nuxeo.android.context.NuxeoContext.shutdown()
,这将关闭nuxeoClient(
org.nuxeo.ecm.automation.client.android.AndroidAutomationClient.shutdown()
)并关闭其
AndroidHttpClient
。。。但是,如果不是从Nuxeo活动继承的话,您应该只在
onDestroy()活动方法中执行此操作。
NuxeoContext自行管理AndroidAutomationClient及其会话。记录这些细节仍然是可能的,但容易出错

您能在代码段中添加导入吗?什么是
Connection.getSession()

您是如何将Nuxeo Android连接器与应用程序集成的:组合还是继承?使用Nuxeo活动、片段或自定义实现?根据答案,您应该使用以下两种方法之一:

org.nuxeo.android.context.NuxeoContextFactory.getNuxeoContext(Context)
org.nuxeo.android.context.NuxeoContext.get(getApplicationContext())
然后建议使用这些方法获取
NuxeoClient
会话

org.nuxeo.android.context.NuxeoContext.getNuxeoClient()
org.nuxeo.android.context.NuxeoContext.getSession()
org.nuxeo.ecm.automation.client.android.AndroidAutomationClient.getSession()

我想我刚刚理解了您的问题:您是否在每个活动中创建新的NuxeoContext?一定是单身。如果是这样的话,使用
NuxeoContextFactory
应该可以解决您的问题,避免频繁关闭它。

我很困惑。你想关闭它,但你想让它在以后保持打开状态?是的,我在所有活动中都需要它,但如果我不关闭它,我的应用程序就不工作了,我需要nuxeoContext来查询Nuxeo,但它会在没有任何明显原因的情况下自行关闭。当然,你需要nuxeoContext。你试过我建议的解决方案了吗?我不相信你的连接类:它有用吗?如果你想或需要自己管理Nuxeo连接器的某些部分,那么你可以看一看。我不明白你说“它会自动关闭”:你需要什么,问题是什么?您首先要求提供一种方法来关闭它(而除了应用程序终止或在少数情况下,您不需要这样做),现在您抱怨不必要的关闭(这不应该发生,但您操作NuxeoContext及其会话的方式可能是根本原因)。
org.nuxeo.android.context.NuxeoContext.getNuxeoClient()
org.nuxeo.android.context.NuxeoContext.getSession()
org.nuxeo.ecm.automation.client.android.AndroidAutomationClient.getSession()