Android难点:

1.Activity的启动模式:standard,singletop,singleinstance,singletask什么区别?

standard:启动的Acitivity在栈中有多个实例

singletop:启动的Activity如果处于栈顶,再次启动Activity则不会创建新的实例

singletask:如果栈中没有实例,则创建一个新的实例,否则将该实例上的Activity统统出栈,后使用该实例。

singleInstance:创建单独的一个栈存放该Activity。例子:ActA -->ActB-->ActC,ActB为singletask模式,其他为standard,按返回,则调用的顺序:ActC----->ActA-->ActB.原因是ActA与ActC处于同一个栈,ActC处于栈顶,ActB处于另一个栈,先清空ActC所处的栈在跳到ActB所处的栈。

2.ListView的Adapter的ViewHolder有什么作用?怎么使用?

记录listview中view的引用,减少findViewById的耗时操作;

使用:Adapter的getView方法中,如果convertView没生成,生成convertView的时候用ViewHolder记录convetView的引用,并将ViewHolder通过convertView的setTag的方法保存。否则通过convertView的getTag方法得到ViewHolder

3.Fragment(碎片)的add和remove什么区别?addToBackStack有什么用?如何同一个activity在平板和手机加载不同的布局?

add:新增一个Fragment到现在的ViewGroup中

remove:将ViewGroup现有的Fragment替换成现有的Fragemnt

addToBackStack:将Fragment加入历史栈,按back键时返回栈中的Fragment。

4.Activity与Activity怎么通信?Activity与Service怎么通信?

activity与activity通信:startActivityResult或者更灵活的BroadCast

activity与service通信:BroadCast或者BindSerivice

5.什么是有序广播,与标准广播有什么区别?广播接收器的静态注册和动态注册什么区别?

有序广播:同步执行的广播,同一个时刻只有一个广播接收器接收到这条广播。通过有序广播设置接受广播的先后顺序,在传递过程中通过abortBroadcast终止往下传递

标准广播:异步执行的广播,广播接收器几乎在同一时刻接收到这条广播。

动态注册:在代码注册;应用启动时再能接受广播,需要手动反注册。

静态注册:在AndroidManifest注册;程序没启动也能接受广播

6.什么是本地广播?

只能在应用本身内部传递的广播,可以解决系统全局广播的安全性问题。

如何使用?

public class MainActivity extends Activity {private IntentFilter intentFilter;private LocalReceiver localReceiver;<span style="color:#ff0000;">private LocalBroadcastManager localBroadcastManager;</span>@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);<span style="color:#ff0000;">localBroadcastManager = LocalBroadcastManager.getInstance(this); // 获取实例</span>Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {<span style="color:#ff0000;">Intent intent = new Intent("com.example.broadcasttest. LOCAL_BROADCAST");localBroadcastManager.sendBroadcast(intent); // 发送本地广播</span>}});intentFilter = new IntentFilter();intentFilter.addAction("com.example.broadcasttest.LOCAL_BROADCAST");localReceiver = new LocalReceiver();localBroadcastManager.registerReceiver(localReceiver, intentFilter); // 注册本地广播监听器}@Overrideprotected void onDestroy() {super.onDestroy();localBroadcastManager.unregisterReceiver(localReceiver);}class LocalReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, "received local broadcast", Toast.LENGTH_SHORT).show();}}}
注意:

(1)本地广播是无法通过静态注册的方式来接收的(2)比系统全局广播更加高效

(2)本地广播的注册反注册,接收都要一致即:都需要带上LocalBroadcastManager.getInstance(context).;如果发送的没带,则认为是系统广播,相应注册的广播接收器是收不到消息的。系统广播亦同。

最佳应用实例:在被迫下线的时候弹出dialog通知用户


7.MeasureSpec中的三个模式EXACTLY,AT_MOST,UNSPECIFIED什么区别?


8.android.intent.category.DEFAULT与android.intent.category.LAUNCHER什么区别?


9.View和ViewGroup的事件处理机制


10.Android中的缓存机制与实现


11.加载移动设备的图片时,如何防止图片加载引起的卡顿,内存溢出?


12.请说说SoftReference,WeakReference,PhantomReference各是什么?有何用处?



更多相关文章

  1. BroadcastReceiver之实现锁屏、解锁例子
  2. [置顶] Android之Fragment的前世今生(二)
  3. android broastcast详解
  4. tabhost中setup()和setup(LocalActivityManager activityGroup)
  5. android定位和地图开发实例
  6. android轻量级开源缓存框架——ASimpleCache
  7. 学习BroadcastReceiver
  8. Android开机启动Activity或者Service方法---------------一直保
  9. Android自动化测试之Monkeyrunner使用方法及实例

随机推荐

  1. Android精准的获取底部虚拟键盘的高度
  2. SmaterWeatherApi---签名加密和数据访问-
  3. android链接服务器获取图片三种方法。
  4. Android中打开文件选择软件打开(ACTION_VI
  5. android实现Splash闪屏效果示例
  6. Android 以太网转 WiFi 热点 (并在同一网
  7. 一分钟了解Android横竖屏 mdpi hdpi xhdp
  8. Android 获取手势onfling代码片段
  9. Android 建立文件夹、生成文件并写入文本
  10. android:为TextView添加样式——下划线,颜