一:一个App的第一个页面即Splash页面常会停留几秒,再进入主页。楼主总结了下Android实现这种停留的几种方式。
one:开启新线程休眠几秒,然后在handler中更新。
new Thread(new Runnable(){
public void run(){
Thread.sleep(XXXX);
handler.sendMessage(); //告诉主线程执行任务
}
}).start
two:java中定时器方式 Timer: new Timer().schedule(new TimerTask() {
@Override
public void run() {
}
}, 1000);
注意终止timer线程,可以调用timer.cancel()方法,或者timer==null制空操作。这些甚至可以在run方法中进行;
three;
new Handler().postDelayed(new Runnable(){
public void run() {
//execute the task
}
}, delay);
其实三和一原理是一样都是handler中更新,
分享个小问题:想必大家监听ListView 每个item 的点击时间有时候会在Adapter的getView()方法中实现的,
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
list.get(position); //会提示我们将bean类型设置为final类型的,
}
});
那为什么要把那个position设置为final类型呢。。。
先科普下java关键在final左右:
1.final修饰的类不能继承,修饰的方法不能重新,修饰的变量值不能改变。
你肯定会问,这个跟今天说的问题有什么关系呢。是的,这得说说匿名内部类的问题了,即是:为什么局部内部类和匿名内部类只能访问局部final变量?的问题;
当getView方法执行完毕之后,变量position的生命周期就结束了,而此时OnClickListener对象的生命周期很可能还没有结束,那么在OnClickListener的onClick方法中继续访问变量a就变成不可能了,但是又要实现这样的效果,怎么办呢?Java采用了 复制 的手段来解决这个问题。方法中的局部变量和形参都必须用final进行限定了,生命周期不一致的问题,数据不一直问题就能够解决。。
详细的java机制会解释,参考文章:http://www.cnblogs.com/dolphin0520/category/361055.html