学习Android(安卓)SDK Samples之旅-connectivity篇
16lz
2021-01-26
【学习目的】android有一些很有意思的API,以及示范性的代码写法就藏在 androidSdk目录/samples之下,但是我们往往都忽视了。
【分享目的】看androidSdk的Samples还是挺费时间的,而且因为英文不好啊,或者缺少讲解指引呀,往往看了半天,费了很大劲也不得精髓,所以我想把一些包里的Demo代码一一看过去,分享比较实用的代码,帮助大家更好地学习,同时也算是自己的一种积累吧。
【本次主题】.../sdk/samples/android-23/connectivity
【1】/BasicNetworking
这个项目有2个有趣的地方:
⑴ 网络判断方法:判断当前设备是否联网,以及判断联网是wifi还是移动流量
/** * Check whether the device is connected, and if so, whether the connection * is wifi or mobile (it could be something else). */private void checkNetworkConnection() { ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeInfo = connMgr.getActiveNetworkInfo(); if (activeInfo != null && activeInfo.isConnected()) { wifiConnected = activeInfo.getType() == ConnectivityManager.TYPE_WIFI; mobileConnected = activeInfo.getType() == ConnectivityManager.TYPE_MOBILE; if(wifiConnected) { Log.i(TAG, getString(R.string.wifi_connection)); } else if (mobileConnected){ Log.i(TAG, getString(R.string.mobile_connection)); } } else { Log.i(TAG, getString(R.string.no_wifi_or_mobile)); }}
(2) 链条chain:
public interface LogNode { /** * Instructs first LogNode in the list to print the log data provided. * @param priority Log level of the data being logged. Verbose, Error, etc. * @param tag Tag for for the log data. Can be used to organize log statements. * @param msg The actual message to be logged. The actual message to be logged. * @param tr If an exception was thrown, this can be sent along for the logging facilities * to extract and print useful information. */ public void println(int priority, String tag, String msg, Throwable tr);}
图解 其中LogWrapper中运用了android.util.Log,真正的系统Log类,其他每个类在实现LogNode接口中的println的方法时,会先运行自己的代码,最后一句写上 if (mNext != null) { mNext.print(priority, tag, msg, tr); }
这样这些类就像链条(chain)一样一环环连接下去了。
换句话说,调用Log的println方法,那么就会带上LoggerWrapper的println,MessageOnlyLogFilter的println,以及LogView的println一起执行。
(后面的我一篇一篇补)
更多相关文章
- 修改Android中strings.xml文件, 动态改变数据
- Android的App Widget实现
- Android连接远程数据库(PHP+MYSQL)
- Android查看apk文件的源代码(一)
- 知乎 Android(安卓)客户端三方库敏感代码扫描机制 - FindDanger
- Android初学者的迷茫
- Android(安卓)layout 使用include和merge 标签
- Android(安卓)SQLiteException: near "": syntax error (code 1)
- 【Android:简单夜间模式切换实现】夜间模式切换,完整代码奉上!