如何对线程的结束作出反应

时间:2015-08-01 17:56:21

标签: android

我有一个登录线程,当它正在运行时,我想要显示一种"加载圈"。那么我如何识别线程何时结束并对其作出反应?

loadingcicle.setVisibility(View.VISIBLE);
Thread t = new Thread(new Einloggen());
        t.start();
//and at the end
loadingcicle.setVisibility(View.GONE);

3 个答案:

答案 0 :(得分:1)

您可能想要使用asynctask模式。

http://developer.android.com/reference/android/os/AsyncTask.html

类似

new AsyncTask<Void, Void, Void>() {
  protected void onPreExecute() {
    showProgress(true);
  }
  protected void void onPostExecute(Void result) {
    hidProgress(true); 
  }
  protected Void doInBackground(Void...voids) {
    doMyBackgroundStuff();
  }
}.executeOnExexutor(AsyncTask.THREAD_POOL_EXECUTOR);

当然,您应该了解活动生命周期事件,并在更新ui之前检查您是否至少已启动或恢复。

答案 1 :(得分:0)

您可以在活动上实例化一个Handler对象并将其传递给您的Einloggen类。因此,使用此处理程序,您可以调用Handler.post()来在UIThread上执行命令。

请参阅此参考:http://developer.android.com/reference/android/os/Handler.html

答案 2 :(得分:0)

final android.os.Handler mHandler = new android.os.Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(Message msg) {
            switch (msg.what){
                case 1:
                    //
                    Toast.makeText(context,"Responded !!!",Toast.LENGTH_LONG).show();
                    break;
            }
            return false;
        }
    });

    new Thread(new Runnable() {
        @Override
        public void run() {
            //do whatever you want here


            mHandler.sendEmptyMessage(1);
        }
    }).start();