【Android进阶】Android面试题目整理与解说
这一篇文章专门整理一下研究过的Android面试题,内容会随着学习不断的添加。假设答案有错误。希望大家能够指正
1.简述Activity的生命周期
在这里保存的数据,应该在 onResume 里读出来,帮用户恢复之前的状态。
在onDestroy()运行后,activity就被真的干掉,能够用 isFinishing()来推断它。假设此时有 Progress Dialog显示,我们应该在onDestroy()里 cancel 掉,否则线程结束的时候。调用Dialog 的 cancel 方法会抛异常。
2.Intent启动Activity有几种方式,怎样实现?
Intent intent = new Intent(this,OtherActivity.class); startActivity(intent);显式意图还有第二种形式。
Intent intent = new Intent(); ComponentName component = new ComponentName(this, OtherActivity.class); intent.setComponent(component); startActivity(intent);事实上这两种形式事实上是一样的,我们看一下Intent构造函数的代码
public Intent(Context packageContext, Class<?> cls) { mComponent = new ComponentName(packageContext, cls); }
Intent intent = new Intent(); intent.setAction("other"); startActivity(intent);
<activity android:name="com.example.lifecicledemo.OtherActivity" > <intent-filter> <action android:name="other" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
这样当我们使用setAction的时候。就能够知道我们究竟是想跳转到哪一个页面了。
3.Android中获取图片有哪几种方式
Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher); img.setImageDrawable(drawable);方式二
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); img.setImageBitmap(bitmap);
方式三
AssetManager assetManager = getResources().getAssets(); try { InputStream is = assetManager.open("ic_launcher.png"); Bitmap bitmap = BitmapFactory.decodeStream(is); img.setImageBitmap(bitmap); } catch (IOException e) { e.printStackTrace(); }
方式四
AssetManager assetManager = getResources().getAssets(); try { InputStream is = assetManager.open("ic_launcher.png"); Drawable drawable = Drawable.createFromStream(is, null); img.setImageDrawable(drawable); } catch (IOException e) { e.printStackTrace(); }
1. ArrayList,Vector, LinkedList 的存储性能和特性
2.Collection 和 Collections 的差别
3.HashMap 和 Hashtable 的差别
HashMap 同意将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不同意。
4.sleep() 和 wait() 有什么差别
调用 sleep 不会释放对象锁。
5.Overload 和 Override 的差别
方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现。
重写 Overriding 是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。假设在子类中定义某方法与其父类有同样的名称和參数,我们说该方法被重写
(Overriding)。子类的对象使用这种方法时,将调用子类中的定义。对它而言,父类中的定义如同被"屏蔽"了。假设在一个类 中定义了多个同名的方法,它们或有不同的參数个数或有不同的參数类型,则称为方法的重载(Overloading)。Overloaded 的 方法是能够改变返回值的类型。
6.同步和异步有何异同。在什么情况下分别使用他们?
比如正在写的数据以后可能被还有一个线程读到,或者正在读的数据可能已经被还有一个线程写过了。 那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个须要花费非常长时间来运行的方法,而且不希望让程序等待方法的返回时,就应该使用异步编程, 在非常多情况下採用异步途径往往更有效率。