我有一个登录线程,当它正在运行时,我想要显示一种"加载圈"。那么我如何识别线程何时结束并对其作出反应?
loadingcicle.setVisibility(View.VISIBLE);
Thread t = new Thread(new Einloggen());
t.start();
//and at the end
loadingcicle.setVisibility(View.GONE);
答案 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();