一个小demo:从网络上get信息,每隔2秒显示一次。

此demo主要用到了handler的用法和网络通信。网络通信的方式有很多种,在这里选择了okhttp。

以为okhttp3.0较之前改动较大,用okhttp3.9.0的库遇到很多错误(访问超时,无法访问等)所以先改用okhttp2.7.5的库

public class MainActivity extends Activity {

private TextView mTextView;
private ImageView imgShow;
private final String path = "http://60.205.204.0/time.php";
private static final String TAG = "HTest";
private final String path1 = "http://img08.oneniceapp.com/upload/show/2017/11/27/9656e0d4c046e9eb0622be5a06e0f44e.jpg-show.n640.jpg";
private OkHttpClient client;
private String result;
private Request request, request1;

private static final int TEST = 1;
private static final int FALL = 2;
private static final int PICTURE = 3;


private void init() {
client = new OkHttpClient();
mTextView = (TextView) findViewById(R.id.text);
imgShow = (ImageView) findViewById(R.id.imgShow);
}


Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case TEST:
mTextView.setText(result);
Log.d(TAG, "test show");
break;

case PICTURE:
byte[] Picture = (byte[]) msg.obj;
Bitmap bitmap = BitmapFactory.decodeByteArray(Picture, 0, Picture.length);
imgShow.setImageBitmap(bitmap);
break;

case FALL:
Toast.makeText(MainActivity.this, "network failed", Toast.LENGTH_SHORT).show();
break;
}
}
};


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
initSyncData();
initPicData();
}


private void initSyncData() {
new Thread(new Runnable() {
@Override
public void run() {
try {
while (true) {
request = new Request.Builder().url(path).build();
Response response = client.newCall(request).execute();
result = response.body().string();

Message message = handler.obtainMessage();
message.what = TEST;
handler.sendMessage(message);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}


} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}

private void initPicData() {
new Thread(new Runnable() {
@Override
public void run() {
try {
request1 = new Request.Builder().url(path1).build();
Response response1 = client.newCall(request1).execute();
byte[] Picture_bt = response1.body().bytes();
//throw handler update UI
Message message = handler.obtainMessage();
message.obj = Picture_bt;
message.what = PICTURE;
handler.sendMessage(message);

} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
----------------------------------------------------------------------------------

使用库 

-------------------------------------------------------------------------------------------------------------

okhttp和okhttp3的区别

http://blog.csdn.net/u012532559/article/details/52852105