当前位置: 代码迷 >> Android >> 几道Android开发面试题,该如何解决
  详细解决方案

几道Android开发面试题,该如何解决

热度:47   发布时间:2016-05-01 10:24:33.0
几道Android开发面试题
前段时间面试被问到的几个问题,有兴趣的朋友,可以帮忙回答一下。

1、在开发一款Android应用时,如果让你给这个应用搭建一个框架或者叫架构,请问你主要会做哪些工作?

2、开发过程中如果遇到问题,请问你解决问题的思路是什么?

3、在开发应用时,我们经常会用到线程池,请问为什么要用线程池?创建线程池的时候,一般会用到哪些比较重要的参数?

4、在与网络交互时,同时最多能够创建多少个http连接?最多发送多少个http请求?

5、Activity切换时(比如从Activity跳转到ActivityB),经常会遇到黑屏,请问为什么会黑屏,有哪些解决方法?

6、在AsyncTask的doInBackground方法里,如果想与主线程交互,都有哪些方法,直接在doInBackground方法里面new Handler()可不可以?
Android面试题

------解决方案--------------------
引用:
前段时间面试被问到的几个问题,有兴趣的朋友,可以帮忙回答一下。

1、在开发一款Android应用时,如果让你给这个应用搭建一个框架或者叫架构,请问你主要会做哪些工作?

2、开发过程中如果遇到问题,请问你解决问题的思路是什么?

3、在开发应用时,我们经常会用到线程池,请问为什么要用线程池?创建线程池的时候,一般会用到哪些比较重要的参数?

4、在与网络交互时,同时最多能够创建多少个http连接?最多发送多少个http请求?

5、Activity切换时(比如从Activity跳转到ActivityB),经常会遇到黑屏,请问为什么会黑屏,有哪些解决方法?

6、在AsyncTask的doInBackground方法里,如果想与主线程交互,都有哪些方法,直接在doInBackground方法里面new Handler()可不可以?

1.可以通过建立model,db,wcf/webservice这些包来分别管理不同的业务

2.遇到异常等方面的问题先debug,遇到思路上的问题可以google

3.没用到过线程池,一般都是通过继承Thread类或AsyncTack来实现多线程

4.创建http链接的数量和http请求的最大值这个真不知道,但是我遇到过连接过多导致内存溢出的情况,我想这应该是和机器有关吧?(请知道的网友具体解答一下,谢谢)

5.A->B黑屏一般是因为B在oncreate或其他方法中在主线程中做了耗时操作导致的

6.在调用doInBackground前可以使用onPreExecute,在调用doInBackground中可使用onProgressUpdate,在调用doInBackground后使用onPostExecute来与主线程交互,关于使用new Handler()是否可与主线程交互的问题没有实际使用过,但是最好还是使用自带的方法比较好一些
------解决方案--------------------
3.线程池可以 有效重用 已经创建的线程对象,节省对系统资源的开销,在Android 里管用的方式应该是直接重写 AsyncTask 实现逻辑就行了, 因为AsyncTask 内部已经使用了先进的线程池框架。

5.添加 Activity 切换动画时 会出现黑屏,原因是 Activity 实际最外层是一个 Window ,Window 对象的背景默认就是黑色,所以切换时 实际上 黑屏的 Window先出现在界面上,然后Activity 内容才以动画形式出现。
解决方式 是为 Activity 添加 style , 详细可以 google 一下。
------解决方案--------------------
1、2随便扯扯就行了
3、线程池主要功能是线程重用,避免重复创建销毁线程 
   楼上几位说的直接重写系统的AsyncTack是会出问题的,重复创建AsyncTack会导致FC,这个问题有很多帖子讲了,楼主可以搜搜看。
  线程池关键参数,看下线程池的构造方法就知道了,不用过多解释吧。。。
int corePoolSize, 
int maximumPoolSize,
long keepAliveTime, 
TimeUnit unit, 
BlockingQueue<Runnable> workQueue
  相关解决方案