其中MyApplication.isRelease是定义在MyApplication中的变量,用来表示是否是发布版本,在真正发布时,置为true
//release:发布版本 public static boolean isRelease = false;Log输出也不能随便用,耗时,可以通过两个栗子看一下
long start = System.currentTimeMillis(); int sum = 0; for(int i=0;i<10000;i++){ sum++; } long end = System.currentTimeMillis() - start; Log.i("TIME",sum+" 用时:"+end);I/TIME: 10000 用时:1
long start = System.currentTimeMillis(); int sum = 0; for(int i=0;i<10000;i++){ sum++; Log.i("TIME",sum+" 用时:"+ (System.currentTimeMillis() - start)); }I/TIME: 9998 用时:201 I/TIME: 9999 用时:201 I/TIME: 10000 用时:201
因此我们写一个LogUtil
public class LogUtil { public static void i(String tag,Object msg){ if(MyApplication.isRelease){ //真机上不打印日志 return; }else { Log.d(tag,String.valueOf(msg)); } } }在工作中应该新建一个toast方法,以便统一修改toast样式
public static void showInfo(Context context, String msg){ ..... }其他toast教程:Android自定义Toast的时长、位置、及显示的View
添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />NetworkUtil
public class NetworkUtil { public static void checkNetworkState(final Activity activity){ //判断有没有网 ConnectivityManager manager = (ConnectivityManager)activity.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = manager.getActiveNetworkInfo(); //没有活动网络 if(networkInfo == null){ final AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setMessage("没网"); builder.setPositiveButton("打开网络", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Intent intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS); activity.startActivity(intent); } }); builder.setNegativeButton("取消", null); builder.show(); } } }使用时在onCreate()中
NetworkUtil.checkNetworkState(this);NetworkStateChangeReceiver
public class NetworkStateChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { NetworkUtil.checkNetworkType(context); } }AndroidManifest中注册
<receiver android:name=".util.NetworkStateChangeReceiver"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> </intent-filter> </receiver>MyApplication
public class MyApplication extends Application { public static boolean networkIsClose = false; public static boolean networkIsMobile = false; public static boolean networkIsWifi = false; ...... @Override public void onCreate() { super.onCreate(); //得网络状态 NetworkUtil.checkNetworkType(this); ...... } }NetworkUtil中增加方法
public static void checkNetworkType(Context context) { //判断用户是开网还是关网 ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = manager.getActiveNetworkInfo(); if (info == null) { //关网 MyApplication.networkIsClose = true; MyApplication.networkIsWifi = false; MyApplication.networkIsMobile = false; LogUtil.i("网络", "用户关闭了网络"); } else { //用户开网 MyApplication.networkIsClose = false; //判断网络类型 //移动网 NetworkInfo networkMobile = manager.getNetworkInfo(manager.TYPE_MOBILE); if (networkMobile != null && networkMobile.isConnectedOrConnecting()) { MyApplication.networkIsMobile = true; LogUtil.i("网络", "用户打开了网络,网络类型是移动网"); } //wifi NetworkInfo networkWifi = manager.getNetworkInfo(manager.TYPE_WIFI); if (networkWifi != null && networkWifi.isConnectedOrConnecting()) { MyApplication.networkIsWifi = true; LogUtil.i("网络", "用户打开了网络,网络类型是wifi"); } } }android.net.conn.CONNECTIVITY_CHANGE广播无法接收的问题