Android 常用工具类

本文介绍了Android开发中常用的工具类,如Activity管理、全局异常捕获、Fragment操作等工具类,还提及了网络状态获取和监听网络变化的方法。此外,作者分享了面试经历,意识到基础不足,资料未深究,后续要查漏补缺,看完资料。

在 Android 开发中,我们经常需要用到各种工具类,比如 SPUills,ListUtils,TimeUtils,StringUtils,ToastUtisl ,FragmentUtils 等等。今天,这篇博客主要介绍我平时在开发中常用到的工具类,希望能给大家带来一点点帮助,后续会不断更新,欢迎大家加入一起维护。

完全退出


写在基类 BaseActivity,然后每个Activity都去继承

public class BaseActivity extends AppCompatActivity {

public ActivityManagerUtil activityManagerUtil;

public Activity mActivity;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(getLayoutId() );

mActivity = this;

activityManagerUtil = ActivityManagerUtil.getInstance();

activityManagerUtil.pushOneActivity(this);

}

@Override

protected void onDestroy() {

super.onDestroy();

//结束Activity&从栈中移除该Activity

activityManagerUtil.popOneActivity(this);

}

protected abstract int getLayoutId();

}

需要完全退出

activityManagerUtil.appExit();


全局异常捕获


只要在Application 初始化即可

public class AndroidUtilsApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

//崩溃处理

CrashHandlerUtil crashHandlerUtil = CrashHandlerUtil.getInstance();

crashHandlerUtil.init(this);

crashHandlerUtil.setCrashTip(“很抱歉,程序出现异常,即将退出!”);

}

}


FragmentUtils


  • addFragment

  • hideAddFragment

  • removeFragment

  • replaceFragment

  • popFragment

  • showFragment

  • dispatchBackPress

让 Fragment 处理 Back 事件,“高内聚,低耦合”,一直是我们追求的目标,而这完美地体现了这一点


Utils


  • void init(@NonNull final Application app)

在 Application 初始化的时候调用

  • Application getApp()

获取 Application 对象

该工具类的主要作用是为我们提供一个 Application 对象,而 Application 是 Context 的实现类。这样,我们在写很多工具类的时候,就不需要传入 Context 对象了。比如 ToastUtils,SPUtils 等,方便用快捷


SPUtils


  • get

  • put

  • getLong

  • getInt

  • getString

  • getFloat

  • getShort

  • putInt

  • putString

在该工具里面,它依赖于 Utils getApp() 方法,因此,我们在调用相应方法的时候不需要每次都传入 Context 。方便又快捷


ToastUtils


  • showLongSafe

  • showShortSafe

  • showShort

  • showLong

showLongSafe 方法与 showLong 方法的区别在于 showLongSafe 是安全地,它可以直接在子线程中调用


IntentUtils


  • Intent openFile(String filePath)

用来产生打开各种类型文件的 Intent,包括 图片,音频文件,视频文件,APK,ppt,xls,doc,chm,txt 等文件


DensityUtil


  • dip2px

  • px2dip

  • px2sp

  • sp2px

主要用来处理 dp 与 px 的互转,sp 与 px 的互转等。


AppUtil


  • String getAppVersionName(Context context)

获取app版本名

  • int getAppVersionCode(Context context)

获取app版本号


获取网络状态


NetStateUtils

  • boolean is3G(Context context)

判断是否是 3G 网络

  • isWifi(Context context)

判断是否是 wifi 网络

  • is2G(Context context)

判断是否是 2G 网络

  • boolean isWifiEnabled(Context context)

判断 WiFi 是否打开

  • isNetworkConnected(Context context)

判断是否有网络连接

  • boolean isMobileConnected(Context context)

判断当前是否是移动网络,并且网络是否可用

  • getAPNType(Context context)

获取当前的网络状态:(该方法是自定义的) :没有网络-0:WIFI网络1:4G网络-4:3G网络-3:2G网络-2

  • String getHostIp()

获取本地的 IP 地址

  • boolean isGPSEnabled(Context context)

判断 GPS 是否开启

更多方法,请参考该类,这里不一一说明了。

监听网络变化

android 监听网络状态的变化及实际应用

监听网络变化的,主要有三个广播

需要注意的 android.NET.conn.CONNECTIVITY_CHANGE 这个广播,从 Android 7.0 开始,如果是静态注册的,将无法收到广播。

更多行为变更请查看官网地址


KeyBoardUtil


  • KeyBoardUtil getInstance(Activity activity)

获取实例对象

  • show()

显示输入法

  • hide()

隐藏输入法


StringUtils


  • isEmpty(CharSequence str)

判断是否是空字符串

  • String getStr(String str,String defStr)

获取字符串的值,如果是 null,返回 defStr。当然你也可以调用 getStr(String str) 方法,为 null 的话,返回 “”。

好处:如果字符串为空,则会包空指针异常。调用该方法,我们可以不必每次判断字符串是否为空。

  • length(CharSequence str)

获取字符串的长度。平时我们如果调用 String.length ,如果字符串为空,则会包空指针异常。调用该方法,我们可以不必每次判断字符串是否为空。

  • String capitalizeFirstLetter(String str)

该方法是将字符串的首字母变为大小写

/**

  • capitalize first letter

  • capitalizeFirstLetter(null) = null;

  • capitalizeFirstLetter(“”) = “”;

  • capitalizeFirstLetter(“2ab”) = “2ab”

  • capitalizeFirstLetter(“a”) = “A”

  • capitalizeFirstLetter(“ab”) = “Ab”

  • capitalizeFirstLetter(“Abc”) = “Abc”

  • @param str

  • @return

*/


ListUtils


在 Android 开发中,对 List 的操作也是非常常见的。

  • getSize(List sourceList)

获取 List 的数量。该方法相比传统的方法,不需要每一次都去判空。

if(sourceList==null){

return 0;

}else{

sourceList.size();

}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

总结

首先是感觉自己的基础还是不够吧,大厂好像都喜欢问这些底层原理。

另外一部分原因在于资料也还没有看完,一面时凭借那份资料考前突击恶补个几天居然也能轻松应对(在这里还是要感谢那份资料,真的牛),于是自我感觉良好,资料就没有怎么深究下去了。

之前的准备只涉及了Java、Android、计网、数据结构与算法这些方面,面对面试官对其他基础课程的考察显得捉襟见肘。

下一步还是要查漏补缺,进行针对性复习。

最后的最后,那套资料这次一定要全部看完,是真的太全面了,各个知识点都涵盖了,几乎我面试遇到的所有问题的知识点这里面都有!希望大家不要犯和我一样的错误呀!!!一定要看完!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

c=“https://i-blog.csdnimg.cn/blog_migrate/d6a625ecca005dd8615ca9f9670c3643.jpeg” />

总结

首先是感觉自己的基础还是不够吧,大厂好像都喜欢问这些底层原理。

另外一部分原因在于资料也还没有看完,一面时凭借那份资料考前突击恶补个几天居然也能轻松应对(在这里还是要感谢那份资料,真的牛),于是自我感觉良好,资料就没有怎么深究下去了。

之前的准备只涉及了Java、Android、计网、数据结构与算法这些方面,面对面试官对其他基础课程的考察显得捉襟见肘。

下一步还是要查漏补缺,进行针对性复习。

最后的最后,那套资料这次一定要全部看完,是真的太全面了,各个知识点都涵盖了,几乎我面试遇到的所有问题的知识点这里面都有!希望大家不要犯和我一样的错误呀!!!一定要看完!
[外链图片转存中…(img-gh69NqhJ-1713118711521)]

[外链图片转存中…(img-D6usxVWO-1713118711521)]

[外链图片转存中…(img-l2ai8ruA-1713118711522)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值