由于服务器需要访问网址,而安卓4.0后网络请求不能放在主线程中进行。
所以需要将网络请求放在子线程中,并用Handler将数据回传到主线程中。
而且由于子线程是不能够改变UI状态或是阻塞UI的,
UI层面上的反馈(Toast)就需要由主线程来进行了。
具体代码如下
1.引入
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
2.在onCreate中,配置Handler,创建子线程
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 1:
Toast.makeText(HandlerActivity.this,"线程通信成功",Toast.LENGTH_SHORT).show();
}
}
};
new Thread(){
@Override
public void run() {
super.run();
Message message = new Message();
message.what = 1;
mHandler.sendMessage(message);
}
}.start();