安卓开发日记--2017.10.10

继续积累吧。

网络连接

  1. 在Android的应用中,需要进行网络连接的时候,需要首先设置网络的权限。
 // AndroidManifest.xml
 <uses-permission android:name="android.permission.INTERNET"/>
  1. 进行网络访问,需要创建一个URL对象,并使用Http协议将其发送出去。构建一个URL对象可以借助AndroidUri对象。
    • base URL传入到URI对象中
    • 之后使用appendQueryParameter添加query的选项
    • 使用build方法,得到最终的URI对象
    • URI对象传入URL对象中,得到最终的URL对象
Uri uri = Uri.parse(FORECAST_BASE_URL).buildUpon()
        .appendQueryParameter(QUERY_PARAM, locationQuery)
        .appendQueryParameter(FORMAT_PARAM, format)
        .appendQueryParameter(UNITS_PARAM, units)
        .appendQueryParameter(DAYS_PARAM, Integer.toString(numDays))
        .build();

URL url = null;
try {
  url = new URL(uri.toString());
} catch (MalformedURLException e) {
  e.printStackTrace();
}
  1. 进行网络访问的操作,必须要在子线程中进行,因为Android的主线程只负责页面的更新,相应用户的操作,需要在17ms内完成一个更新操作,如果一个操作时间过长,例如,网络操作,就会被认为是应用没有响应,会被Android强制关闭。
    这里就需要一个新的类AsyncTask。
    AsyncTask只有doInBackgroundpublicProgress方法是在新线程中执行,其他的方法还是在主线程中调用。
  1. 添加menu,在res文件夹下,添加一个menu文件夹,并添加menu的资源文件。所有的menu资源使用Java进行访问的时候,通过R.menu.xxx进行访问。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
            app:showAsAction="ifRoom"
            android:id="@+id/action_refresh"
            android:title="@string/refresh"/>

</menu>
  1. 添加menu资源以后,就需要将其放入到activity之中。需要重写onCreateOptionsMenu方法,这个方法返回一个bool值,用来控制menu是否展示在界面上。使用getMenuInflater().inflate(menu's id, menu)menu资源放到activity中。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // the resourse of menu is in R.menu
    getMenuInflater().inflate(R.menu.forecast, menu);
    return true;
}
  1. 之后需要将menu的选择事件。通过传入的Itemid来确定当前的处理事件。
public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getItemId() == R.id.action_refresh){
        mWeatherTextView.setText("");
        loadWeatherData();    
    }
    return super.onOptionsItemSelected(item);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值