java - 从线程启动 Android Activity

标签 java android multithreading

我在这里想做的是,我想调用一个 Web 服务,并根据它的响应,我可能会调用另一个 Web 服务或启动一个 Activity 。我已经在一个单独的线程中编写 Web 服务,但问题是我正在工作线程中调用该 Activity , 为了让自己更清楚,我放置了我的伪代码

if (User ID and Password present in the shared preference) THEN 
                 Utils.checkauthorisation(API)   //Web Service Call
                 if(respsonse is Paswordexpired)
                    erase password from DB
                    Goto (LOGIN SCREEN)
                 else if( download of images hasn't happened today) ) THEN
                        UTILS.DownloadImages//Web service call
                        if(response==connectivityorOtherError)
                            Toast respective Message
                            GOTO (GALLERY SCREEN)
                        else if (response==confilicted Data)
                            Goto (CHANGES SCREEN)
                        endif
                endif
endif

我计划显示一个进度条并在这样的线程中执行所有这些事件

  progressDialog = ProgressDialog.show(this, "Loading",
                "Authenticating Please wait.");

     new Thread() {
        public void run() {

        ///execute the pseudo code

        Message msg = Message.obtain();
        msg.what = 1;
        messagHandler.sendMessage(msg);
        }

    }.start();



            private static Handler messagHandler = new Handler() {
    public void handleMessage(Message message) {
        super.handleMessage(message);
        switch (message.what) {
        case 1:
            progressDialog.dismiss();
            break;
        default:
            break;
        }
    }

};

但令我不安的是,我必须在这里在工作线程中启动一项 Activity 这是好的做法吗? 我最初认为我们只能从 UI 线程启动一个 Activity。这里后端发生的过程是什么(在线程意义上)?如果这不是一个好的做法,那么实现我的伪代码的其他替代方案是什么?

谢谢

最佳答案

使用消息启动 Intent 而不是在您的工作线程上向处理程序发送消息。处理程序在 UI 线程上运行。如果不是,您将无法更新处理程序中的 UI 元素。

关于java - 从线程启动 Android Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9366373/

相关文章:

java - 在 OSGi DS 中,如何在引用服务的属性更新时收到通知?

java - 在 Android 中将 XML 文件解码为 Java 对象?

c++ - 使用 C++11 线程强制线程之间的竞争

c - 在 C 中实现 KeyPress 事件

java - 安卓 : How to synchronized resource in right way

java - 一个接口(interface)有两个类型参数。我可以实现两种类型相同的接口(interface),以便它们兼容吗?

java - 无法更改 JFrame 或 JPanel 的背景颜色

android - 如何将联系人从一个帐户复制到另一个帐户?

android - 更改地点自动完成的语言环境

java - 蓝牙 Android 开发者代码