返回信息流1.一个xml文件中,包含一个viewgroup,viewgroup里面有个textview,如果我点击textview如何做到让textview不响应这个点击事件,让viewgroup去处理,考察的地方是ondispatch,onintercept,ontouch事件的调用流程,分发机制,也问到了onintercept和onintercept的调用顺序。
2.如何通过静态内部类的方式,实现单例模式,我写的是通过懒汉式的方式实现的,静态内部类不会,后来面试官问,如何保证线程安全,涉及到给方法加锁和部分代码加锁。
3.子类和父类中,静态代码块和非静态代码块,构造方法的调用顺序。
4.线程间同步的方式包括哪些?
5.一个activityA和启动activityB,他们的生命周期的调用顺序是什么?有一点需要注意下,oncreat,onstart,onresume,onpause,onstop,然后启动activityB,注意onpause是必须调用的,当初我以为调用onstop以后,就不调用onPause,这点需要注意。
6.onsavedInstance的用法,它是防止应用意外终止的,我按下home键会调用这个方法吗?如果按下back键会调用吗?
7.如何实现两个线程通过handler相互发消息和处理消息,就是两个线程分别调用对方的handler给对方的messegeQueue发消息,如果是工作线程的话,需要自己去初始化looper和messagequeue,如果是主线程如何实现这些组件的初始化的,我当时说的是主线程内部已经包含looper了。
8.关于service,它是运行在主线程还是工作线程,假如我需要在service中做一些耗时操作呢?我应该如何保证不引起anr?当内存不足,如何保证service不被杀死呢?
9.IntentService用过吗?这个不太了解,我给面试官说了说PendingIntent。
10.我看你简历里面做了个速可专车的项目,关于订单这块是如何处理的?这块我用的是leancloud服务器做的,推送这块怎么做的?应该是搜索附近的司机,找最近的推送?如何计算价格的?当时我说的是,调用的百度地图的api,计算两点之间公交车行驶的距离,然后通过距离计算价格。这时候没有考虑时间的因素。面试官问,如果我没有按照预定的路线行驶呢?这样有两种解决方式,一种是通过服务器去计算实际距离,一种是通过在客户端不断地算两点距离的累加,这样也可以,通过service去后台计算,当然对手机的内存会有点影响,不过影响不大。
11.介绍下多态的实现方式。
12.wait和sleep有什么区别?
13.用过哪些开源框架吗?介绍下。
14.假如我用handler post一个runnable,这个runnable运行在主线程还是工作线程,里面可以做一些耗时操作吗?
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #32624同步于 2016/11/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
今天下午易到用车安卓开发面试总结
nijian81
2016/11/3镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
主线程也需要初始化Looper,只不过在启动MainActivity之前,已经由ActivityThread帮你完成了。
public static void main(String[] args) {
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMain");
SamplingProfilerIntegration.start();
// CloseGuard defaults to true and can be quite spammy. We
// disable it here, but selectively enable it later (via
// StrictMode) on debug builds, but using DropBox, not logs.
CloseGuard.setEnabled(false);
Environment.initForCurrentUser();
// Set the reporter for event logging in libcore
EventLogger.setReporter(new EventLoggingReporter());
AndroidKeyStoreProvider.install();
// Make sure TrustedCertificateStore looks in the right place for CA certificates
final File configDir = Environment.getUserConfigDirectory(UserHandle.myUserId());
TrustedCertificateStore.setDefaultUserDirectory(configDir);
Process.setArgV0("<pre-initialized>");
Looper.prepareMainLooper();
ActivityThread thread = new ActivityThread();
thread.attach(false);
if (sMainThreadHandler == null) {
sMainThreadHandler = thread.getHandler();
}
if (false) {
Looper.myLooper().setMessageLogging(new
LogPrinter(Log.DEBUG, "ActivityThread"));
}
// End of event ActivityThreadMain.
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
Looper.loop();
throw new RuntimeException("Main thread loop unexpectedly exited");
}
【 在 lixing 的大作中提到: 】
: 主线程也需要初始化Looper,只不过在启动MainActivity之前,已经由ActivityThread帮你完成了。
: [code=java]
: public static void main(String[] args) {
: ...................
嗯嗯