1.1 以下代码不抛出异常时输出 :frist ,final
public static void main(String[] args) {
try {
System.out.println("frist");
return ;
} catch (Exception e) {
} finally {
System.out.println("finally");
}
}
答:在android中,经常用到的定时器主要有以下几种实现:
1、采用handler与线程的sleep(long)方法
开启一个线程,,每隔1s向Handler发送消息
public class MainActivity extends Activity {
private Handler myhandler;
private static int timemessage=0x01;
private int timer=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myhandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
if(msg.what==timemessage){
System.out.println("timer="+(++timer));
}
}
};
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
try {
System.out.println("执行了");
Thread.sleep(2000);
myhandler.sendEmptyMessage(timemessage);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
}
}
2、 采用Handler自带的postDelayed(Runnable,long)方法
利用延迟几秒发送Message,嵌套postDelayed()实现定时器。
public class MainActivity extends Activity {
private Handler myhandler;
private static int timemessage = 0x01;
private int timer = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myhandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
if (msg.what == timemessage) {
System.out.println("timer=" + (++timer));
}
}
};
myhandler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
myhandler.sendEmptyMessage(timemessage);
myhandler.postDelayed(this, 1000);
if (timer == 10) {
myhandler.removeMessages(timemessage);
}
}
}, 1000);
}
}
3、 采用Handler与Timer、TimerTask结合的方法
利用Timer类的schedule()方法,每隔一段时间做什么事情实现定时器。
public class MainActivity extends Activity {
private Handler myhandler;
private static int timemessage = 0x01;
private int timer = 0;
private Timer timerobject;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myhandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
if (msg.what == timemessage) {
System.out.println("timer=" + (++timer));
}
}
};
timerobject=new Timer();
timerobject.schedule(new TimerTask() {
//1s后,在每隔1s做什么事情
@Override
public void run() {
// TODO Auto-generated method stub
myhandler.sendEmptyMessage(timemessage);
}
}, 1000,1000);
}
}
public class MainActivity extends Activity {
private ListView mylistview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mylistview = (ListView) findViewById(R.id.listviewid);
List
单例模式确保某一个类只有一个实例。通过使用private的构造函数确保在应用中只产生一个实例。
由于单例模式在内存中只有一个实例,减少了内存开销。
单例模式可以避免对资源的多重占用,例如一个写文件时,由于只有一个实例存在内存中,避免了对同一个资源的同时写操作。
使用单例模式,解决的就是多线程的同时创建的问题。
public class Person{
private Person(){};
private static Person zongtong;
public static Person getPersonStance(){
if(zongtong==null){
synchronized(Person.class){
if(zongtong==null){
zongtong=new Person();
}
}
}
return zongtong;
}
}
public static int twoDivideSearch(int[] arr, int findValue) {
int startIndex = 0;
int endIndex = arr.length - 1;
while (startIndex <= endIndex) {
int middleIndex = ((endIndex - startIndex+1) / 2)-1;
int middleValue = arr[middleIndex];
if (findValue == middleValue)
return middleIndex;
else if (findValue < middleValue) {
endIndex = middleValue - 1;
} else {
startIndex = middleValue + 1;
}
}
return -1;
}
2.5 请画出你主导的最有成就感一款app的模块架构图,并指出模块依赖关系。
2.6 使用Android数据库创建一个通信表(属性:姓名、号码、性别),并提供查询,添加的contentprovider。
2.7 实现一个5秒的启动页面,然后跳转到MainActivity,需要考虑到当启动页面被提前关闭时计数器取消的情况。
2.8 在Activity实现动态创建广播和注销广播。
2.9 实现一个移位动画,要求有回弹动作。xml或代码实现均可。(提示可以使用BounceInterpolator)
2.10 请实现一个二分查找
2.11 已知整型数组age【N】中存放了一个组织所有成员的年龄,请实现一个线性的排序算法。将数组中的值从大到小的顺序输出。
2.12 给出一个函数输出一个字符串的所有排列