Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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
Java 从线程启动android活动_Java_Android_Multithreading - Fatal编程技术网

Java 从线程启动android活动

Java 从线程启动android活动,java,android,multithreading,Java,Android,Multithreading,我在这里试图做的是,我想调用一个web服务,根据它的响应,我可能会调用另一个web服务或启动一个活动。我已经在一个单独的线程中编写web服务,但问题是我在一个工作线程中调用该活动, 为了让自己更清楚,我把我的伪代码放在了 if (User ID and Password present in the shared preference) THEN Utils.checkauthorisation(API) //Web Service Call

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

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;
        }
    }

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


谢谢

启动意图,并向处理程序发送一条消息,该消息不在工作线程上。处理程序在UI线程上运行。否则,您将无法更新处理程序中的UI元素