其他分享
首页 > 其他分享> > android-在活动之间传递类的实例

android-在活动之间传递类的实例

作者:互联网

如果我获得了A类和B类,则A类充当具有2个按钮的菜单,一个按钮用于连接一个进行登录.当我按连接时,我运行此方法:

    private void connect(){
    Thread t1 = new Thread(){
        public void run(){
    connection_class = new ConnectionClass();
    connection_class.run();
        }
    };t1.start();
}

该调用我的ConnectionClass,它在构造函数中执行此操作:

    public ConnectionClass(){
        socket = new Socket("address", port);
        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
}

可以很好地与服务器连接,然后按登录操作(没有onClick的东西):

        connection_class.MethodToWriteToServer("CommandThatLogsMeIn");     
        Intent i = new Intent().setClass(v.getContext(), Class.class);          
        startActivity(i);

这可以正常工作,但是当im在Class B中时,我想使用它的相同实例.我可以做一个新的线程和该类的实例,但这会破坏开始菜单的目的,并要求我再次登录.

启动实例时是否有可能将实例作为参数传递给活动,或者android的执行方式是什么?

作为一个旁注,我并不是真的需要菜单,但是我在课业分配之前有一些空闲时间,并认为我也可以尝试一下.

解决方法:

我昨天刚完成一个这样的项目.

例如,您有一个名为WebService的连接管理器:

// singleton class
public class WebService {

    private static WebService instance;

    private WebService() {}

    public static WebService getInstance() {
        if (instance == null)
            instance = new WebService();
        return instance;
    }// getInstance()

    public void login() {};
    public void getFeeds() {};
    public void logout() {};
}

然后,您可以将其放在这样的基本活动中:

public class WebServiceActivity extends Activity {

    private final WebService fWebService = WebService.getInstance();

    protected WebService ws() { return fWebService; }
}

然后,您有两个活动,LoginActivity和WorkingActivity:

public class LoginActivity extends WebServiceActivity {

    buttonLogin.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            try {
                ws().login();

                // start WorkingActivity if logging in ok
            } catch (...) { ... }
        }
    });
}

public class WorkingActivity extends WebServiceActivity {

    buttonGetFeeds.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            ws().getFeeds();
        }
    });

    buttonLogout.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            ws().logout();
            finish();
        }
    });
}

无论如何,有很多方法.以上是我的.希望它对您有帮助:-)

标签:multithreading,android-intent,android-activity,android
来源: https://codeday.me/bug/20191201/2082301.html