ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2019-12-01 17:28:06  阅读:197  来源: 互联网

标签:multithreading android-intent android-activity 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有