Java 将特定对象传递给其他活动(Jsch)

Java 将特定对象传递给其他活动(Jsch),java,android,serialization,network-programming,parcelable,Java,Android,Serialization,Network Programming,Parcelable,我在将对象从一个活动传递到另一个活动时遇到问题。 我使用Jsch()类是因为我想建立一个Sftp连接 在我的登录活动中: ServerConnect lLogin = new ServerConnect(lUser,lPass,lIP,lPort); ASYNCLogin lASYNC = new ASYNCLogin(lLogin,getBaseContext()); lASYNC.execute(); 我的异步任务: @Override protected Integ

我在将对象从一个活动传递到另一个活动时遇到问题。 我使用Jsch()类是因为我想建立一个Sftp连接

在我的登录活动中:

ServerConnect lLogin = new ServerConnect(lUser,lPass,lIP,lPort);
ASYNCLogin lASYNC = new ASYNCLogin(lLogin,getBaseContext());
lASYNC.execute();   
我的异步任务:

    @Override
    protected Integer doInBackground(Void... params)
    {
        if(mServerConnect.connectServer())
            return 1;       
        return 0;       
    }
    @Override
    protected void onPostExecute(Integer result)
    {       
        //Toast.makeText(mContext, "Sucessfully Connected!", Toast.LENGTH_LONG).show();         
        Intent lListFiles = new Intent(mContext,ListFilesActivity.class);       
        lListFiles.putExtra("ServerConnect", mServerConnect);
        lListFiles.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        mContext.startActivity(lListFiles);
    }
我的ServerConnect类中的connect方法:

public boolean connectServer()
    {
        try
        {
            mSession=mSsh.getSession(mUsername,mServerIP,mServerPort);
            mSession.setConfig(mConfig);
            mSession.setPassword(mPassword);
            mSession.connect();         
            mChannel = mSession.openChannel("sftp");
            mChannel.connect();
        }
}
如何在其他活动中获取对象:

mLogin = (ServerConnect) getIntent().getSerializableExtra("ServerConnect"); 
我尝试了Serializable,但它不起作用,因为我无法在java.lang.Object类中实现Serializable接口。。。。 我也尝试过使用Parcelable,但我不知道如何将自定义类写入Parcelable。 是否有其他方法将对象从登录活动传递到其他活动

日志:

03-03 13:35:40.583: E/AndroidRuntime(4186): FATAL EXCEPTION: main
03-03 13:35:40.583: E/AndroidRuntime(4186): Process: com.example.securebox, PID: 4186
03-03 13:35:40.583: E/AndroidRuntime(4186): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.example.securebox.ServerConnect)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Parcel.writeSerializable(Parcel.java:1312)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Parcel.writeValue(Parcel.java:1260)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Parcel.writeArrayMapInternal(Parcel.java:618)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Bundle.writeToParcel(Bundle.java:1665)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Parcel.writeBundle(Parcel.java:632)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.content.Intent.writeToParcel(Intent.java:7013)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2076)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1419)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.app.ContextImpl.startActivity(ContextImpl.java:1039)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.app.ContextImpl.startActivity(ContextImpl.java:1021)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at com.example.securebox.ASYNCLogin.onPostExecute(ASYNCLogin.java:32)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at com.example.securebox.ASYNCLogin.onPostExecute(ASYNCLogin.java:1)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.AsyncTask.finish(AsyncTask.java:632)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Handler.dispatchMessage(Handler.java:102)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Looper.loop(Looper.java:137)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.app.ActivityThread.main(ActivityThread.java:4998)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.lang.reflect.Method.invokeNative(Native Method)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.lang.reflect.Method.invoke(Method.java:515)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at dalvik.system.NativeStart.main(Native Method)
03-03 13:35:40.583: E/AndroidRuntime(4186): Caused by: java.io.NotSerializableException: java.lang.Object
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
03-03 13:35:40.583: E/AndroidRuntime(4186):     at android.os.Parcel.writeSerializable(Parcel.java:1307)
03-03 13:35:40.583: E/AndroidRuntime(4186):     ... 22 more

NotSerializableException:java.lang.Object
ServerConnect
中有一些东西您正试图打包,但无法打包。是的。。。。我想是因为我在ServerConnect类中使用了Jsch()类,它们使用的是OutputStreams,它们是不可序列化的。。。我认为这就是问题所在。如果在活动之间使用相同的连接,那么将它从一个连接传递到另一个连接并不是一个好的解决方案。服务比较合适。你能详细解释一下吗。。?你说的服务是什么意思?抱歉,我是Android编程的初学者。
服务是一个应用程序组件,可以在后台执行长时间运行的操作