安卓开发日记--2017.10.10
16lz
2021-01-24
继续积累吧。
网络连接
- 在Android的应用中,需要进行网络连接的时候,需要首先设置网络的权限。
// AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET"/>
- 进行网络访问,需要创建一个
URL
对象,并使用Http
协议将其发送出去。构建一个URL
对象可以借助Android
的Uri
对象。
- 将
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();}
- 进行网络访问的操作,必须要在子线程中进行,因为Android的主线程只负责页面的更新,相应用户的操作,需要在17ms内完成一个更新操作,如果一个操作时间过长,例如,网络操作,就会被认为是应用没有响应,会被Android强制关闭。
这里就需要一个新的类AsyncTask。
AsyncTask只有doInBackground
和publicProgress
方法是在新线程中执行,其他的方法还是在主线程中调用。
Menu
- 添加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>
- 添加menu资源以后,就需要将其放入到activity之中。需要重写onCreateOptionsMenu方法,这个方法返回一个
bool
值,用来控制menu是否展示在界面上。使用getMenuInflater().inflate(menu's id, menu)
将menu
资源放到activity中。
@Overridepublic boolean onCreateOptionsMenu(Menu menu) { // the resourse of menu is in R.menu getMenuInflater().inflate(R.menu.forecast, menu); return true;}
- 之后需要将
menu
的选择事件。通过传入的Item
的id
来确定当前的处理事件。
public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId() == R.id.action_refresh){ mWeatherTextView.setText(""); loadWeatherData(); } return super.onOptionsItemSelected(item);}
更多相关文章
- Android(安卓)面试题
- Android(安卓)SQLite使用详解和多线程并发访问
- [置顶] 安卓实现序列化之Parcelable接口
- Android(安卓)高手进阶教程(十三)之----Android(安卓)数据库SQLi
- Android界面绘制_canvas解析
- Drawable、Bitmap、Canvas和Paint的区别
- 内存泄露的调试
- Android(安卓)之 使用VideoView播放视频
- Android(安卓)Service与Activity之间通信的几种方式