android button怎么变成圆的_Android 开发你需要了解的那些事

本文介绍了Android开发中常见的问题,包括ANR的触发条件并非仅主线程耗时超过5秒,而是InputDispatching超时;子线程使用时要注意线程池的使用以避免过多线程创建;内部类可能导致内存泄漏,应改为静态内部类;使用Handler时注意弱引用以防止Activity无法释放;推荐使用SharedPreferences的apply方法代替commit以避免阻塞主线程;大量数据库操作时开启事务能显著提高效率。
摘要由CSDN通过智能技术生成

本文微信公众号「AndroidTraveler」首发。

背景

最近部门有新入职员工,作为规划技术路线的导师,这边给新员工安排了学习路线。

除了基本的学习路线之外,每次沟通,我都留了一个小问题,让小伙伴去思考。

这些问题有些是刚接触 Android 开发的小伙伴所不熟悉的,有些则是部分初级工程师都没有注意到的。

因此这边纪录一下,希望帮助刚毕业进入职场的 Android 小伙伴,或是对这些还不是很熟悉的 Android 开发工程师们。

如有补充或者交流,欢迎留言。

第一点:ANR 的其中一个条件并不是在 Activity 主线程做耗时任务

Q: 你是否了解过 ANR? A: 知道,但不是很了解。

Q: 什么情况下会出现 ANR? 
假设这里回答的不是“在主线程执行耗时任务”的话,可以不继续追问,直接让小伙伴去了解 ANR,后期再讨论。 
如果回答了是“在主线程执行耗时任务”的话,那么继续:

Q: 多久算耗时? A: 不要超过 5s。

Q: 那么假设我在 Activity sleep 20s,是不是就一定会 ANR?

上代码例子: 
MainActivity.java 文件:

public class MainActivity extends AppCompatActivity {
         @Override    protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
                 @Override            public void onClick(View view) {
                     Log.e("zengyu","before sleep");                try {
                         Thread.sleep(20000);                } catch (InterruptedException e) {
                         e.printStackTrace();                }                Log.e("zengyu","after sleep");            }        });    }}

activity_main.xml 文件:

<?xml version="1.0" encoding="utf-8"?&g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值