您的位置:首页 > 理论基础 > 计算机网络

获取网络文字 更新UI

2017-11-06 14:35 148 查看
清单文件:

<uses-permission android:name="android.permission.INTERNET" />

<!--==============================-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!--读取网络状态的权限-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>


/**

 * 主线程 ---UI线程,不可以阻塞, 如果阻塞会报ANR(application not response)

 * 子线程---, 耗时操作,联网就是耗时操作;

 */

public class MainActivity extends AppCompatActivity {

    public String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";

    String urlBitmap = "http://img.my.csdn.net/uploads/201407/26/1406383265_8550.jpg";

    String tag = "wzq";

    private ImageView iv;

    private TextView tv;

    private Handler handler = new Handler() {

        @Override

        public void handleMessage(Message msg) {

            super.handleMessage(msg);

            int what = msg.what;

            switch (what) {

                case 1:

                    String infoText = (String) msg.obj;

                    tv.setText(infoText);

                    break;

                case 2:

                    break;

            }

        }

    };

    /**

     * alt+enter  自动补全

     * fbc --再tabfindViewByIde的快捷键;

     * ctrl+alt +F 声明全局变量

     * ctrl+alt +L  格式化代码

     *

     * @param savedInstanceState

     */

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        tv = (TextView) findViewById(R.id.tv);

        iv = (ImageView) findViewById(R.id.iv);

        tv.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                //联网是耗时操作,不能直接在主线程写

                //子线程不能更新UI

                new Thread() {

                    @Override

                    public void run() {

                        super.run();

                        String netJson = NetUtil.getNetJson(urlString);

                        Gson gson = new Gson();

                        Product product = gson.fromJson(netJson, Product.class);

                        String infoText = product.getInfo();

                        Message message = new Message();

                        message.obj = infoText;

                        message.what = 1;

                        handler.sendMessage(message);

                    }

                }.start();

            }

        });

    }

}

public class NetUtil {

private static String  tag = "getNetJson";

        public static String getNetJson(String urlString){

            try {

                //url对象封装接口字符串

                URL url = new URL(urlString);

                //用url打开连接, 返回值我们用HttpURLConnection

                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

                InputStream inputStream = urlConnection.getInputStream();

                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

                //可拼接的字符串

                StringBuilder stringBuilder = new StringBuilder();

                String temp ="";

                while ( (temp= bufferedReader.readLine()) != null){

                    stringBuilder.append(temp);

                }

                String jsonString = stringBuilder.toString();

                return jsonString;

            } catch (MalformedURLException e) {

     
4000
          e.printStackTrace();

                Log.e(tag, "getNetJson: "+ e.toString() );

            }catch (IOException e) {

                e.printStackTrace();

                Log.e(tag, "getNetJson: "+ e.toString() );

            }

            return "";

        }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: