总结一下;
在做菜单的功能,发现,菜单越来越多,后来仔细看了他们的区别,如下:
但是onCreateOptionsMenu 和onPrepareOptionsMenu 的差別在哪呢?
android中可以重写activity的两个方法进行创建菜单:onPrepareOptionsMenu(Menu menu),onCreateOptionsMenu。
两种方法的区别是,前者是每次点击menu键都会重新调用,所以,如果菜单需要更新的话,就用此方法。而后者只是在activity创建的时候执行一次。
onCreateOptionsMenu
只會呼叫
一次,他只會在MENU顯示之前,去做一次!!!之後就不會再去呼叫!
onPrepareOptionsMenu
onPrepareOptionsMenu是每次在display menu之前,都會去呼叫,
只要按一次menu按鍵,就會呼叫一次。
所以你會發現每次只要按一次menu按鍵,
menu選單就會多兩個(因為我們預設是兩個)
你可以利用onPrepareOptionsMenu來做update menu狀態的動作
如果你要把menu現有的option清空,就是下面那行CODE
menu.clear();
还有,在fragment中的onCreateOptionsMenu和Activity中的参数不同的,多了个MenuInflater,所以在fragment中调用MenuInflater的时候,要这么调用:
MenuInflater inflater = this.getActivity().getMenuInflater();
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// 在onCreateOptionsMenu()之前必须在onCreate中调用setHasOptionsMenu(true)
inflater.inflate(R.menu.menu_three, menu);
super.onCreateOptionsMenu(menu, inflater);
}
1、Hashmap中有哪些属性或者参数可以提高它的性能?
我听到这个问题后,脑袋直接短路,平时在coding的时候,用到Hashmap时,都是这样的:Map<String,
Object> newMap = new HashMap<String,
Object>();然后就直接往里面放元素了,想来想去,还真想不出来声明的时候,能加上哪些属性或者参数。然后回来,看了下Hashmap的源
码,发现还真有两个属性,可以在创建时使用,一个是初始容量,一个是加载因子。但是回头想一下,即使知道这两个属性可以优化性能,但是在实际使用中,这两
个值要怎么配合才能达到最优呢?如果传入的这两个值不协调的话,有可能还会降低Hashmap的性能。哎,喜欢研究的淘宝专家们,研究是为实际应用服务
的,我想仅仅知道这两个属性的话,在实际应用中不一定派上用场,第一个问题就到这里,下面是代码:
/**
* The default initial capacity - MUST be a power of two.
*/
static final int DEFAULT_INITIAL_CAPACITY = 16;
/**
* The maximum capacity, used if a higher value is implicitly specified
* by either of the constructors with arguments.
* MUST be a power of two <= 1<<30.
*/
static final int MAXIMUM_CAPACITY = 1 << 30;
/**
* The load factor used when none specified in constructor.
*/
static final float DEFAULT_LOAD_FACTOR = 0.75f;
2、如果开发高并发程序,你一般是如何实现的呢?
这个问题其实是在问concurrent包里的一些知识,幸好之前在项目中用到过,就和他聊了起来,java.util.concurrent.automic以及java.util.concurrent.lock包中的一些类啊,方面啊,都说了下。
然后面试人员又问了,如果我要限制最多3个人同时进行操作一个资源的话,你对资源是怎么处理的呢?
我说首先设置一个poolSize=3,然后可以用java.util.concurrent.lock包下面的Lock类里的lock和unlock方法对资源进行加锁与解锁操作。
结果面试人员又问了,还有没有其他方法?
如果有的话,就只有多线程中的同步操作了。
面试人员说,concurrent包里还有另外的方法可以实现这样的需求。。。