Intent启动activity的几种方法,如何实现?
A:显示跳转,在可以引用到哪个类,并且可以引用到那个类的字节码时可以使用。一般用于自己程序的内部。显示跳转不可以跳转到其他程序的页面中。
Intentintent = new Intent(this,xxx.class);
startAcitvity(intent);
B:隐式跳转,可以在当前程序跳转到另一个程序的页面。隐式跳转不需要引用到那个类,必须知道那个界面的动作action和信息category。
打开浏览器为例:
Intentintent = new intent();
intent.setAction("android.intent.action.View"); 设置动作
intent.addCategory("android.intent.category.BROWSABLE"); 设置参数
intent.setData(uri.parse(""));
startActivity(intent); 启动
什么是ANR,如何避免?
全名为(Application Not Response),应用程序在有一段时间响应不够灵敏,系统会向用户显示一个对话框。
用户可以选择等待让程序继续运行,也可以选择强制关闭。非常影响用户的体验。
产生原因:1.在5秒内没有响应输出事件(例如:按键按下,屏幕触摸)
2.BroadcastReceiver在10秒内没有执行完毕
3.主线程执行耗时操作
如何避免:不要在主线程里做耗时操作,而应放在子线程中实现,比如采用Handler+message的方式。和网络交互的耗时操作就采用asyntask异步任务方式。
fragment和activity之间如何通信?
1.Fragment中通过getactivity进行强制转化,调用activity中的共有方法(不推荐会影响屏幕的适配)
2.activity在切换fragment的时候,通过setarguments向fragment传递参数,fragment通过getarguments;获得从activity中传递过来的值。
3.activity实现一个接口,fragment在onAttach方法中,将该activity转化成接口,调用的时候回调