7 activity生命周期
docs/index.html
1、onCreate:第一次被启动、
2、onStart:activity可视时调用、
3、onResume:activity获得用户焦点是被调用、
4、onPause:启动另外一个activity时被调用、
5、onStop:另一个activity启动完成后被调用(第一个Activity处于不可见的状态)、
若启动另外一个activity时,onStop方法未执行,当重新回到第一个activity时直接调用OnResume
6、onRestart:第一个activity未被销毁前又重新启动时被调用,执行完之后继续执行onStart
7、onDestroy:activity代码中执行finish方法时或者android系统资源不够用时自动销毁时调用 窗口形态的activity
在manifest.xml中定义activity时指定android:theme="@android:style/Theme.Dialog"即可 activity还要考虑能否被kill掉,资源被系统回收,(被调用onPause onStop onDestroy的activity有可能被资源紧缺的系统所销毁) Task
存放多个activity的栈 五、handler的使用
线程的生命周期:就绪、运行、阻塞、死亡 1、创建一个handler对象:
Handler handler = new Handler();
2、调用post方法
handler.post(updateThread);//把线程updateThread放入消息队列中去
3、定义线程,并在run方法内部执行postDelayed或post方法继续循环
Runnable updateThread = new Runnable(){
public void run(){
//执行自定义操作
//过3000毫秒后再把线程放入消息队列中去被调用执行 handler.postDelayed(updateThread,3000);
}
};
4、调用removeCallbacks
handler.removeCallnacks(updateThread);//从消息队列中移除线程,结束handler
执行
handler.post(updateThread);
1、
Runnable updateThread = new Runnable(){
public void run(){
i =+ 10; //得到一个消息对象,Message类是由android系统提供
Message msg = handler.obtainMessage();
msg.arg1 = i;
//将msg加入到消息队列中,然后会异步的执行handler的handleMessage方法取出消息
handler.sendMessage(msg);
if(i == 100){
handler.removeCallbacks(updateTread);
}
}
}; 2、使用匿名内部类复写Handler的handleMessage,取出消息队列中的Message对象
Handler handler = new Handler(){
public void handleMessage(Message msg){
bar.setBarProgress(msg.arg1);
//将线程继续加入到队列当中
handler.post(updateThread);
}
}; 以上处理线程的过程中并没有建立新的线程,而是直接执行当前activity线程的run方法,若用以下方法,则定义一个新的线程并去执行新线程
Thread t = new Thread(r)
t.start();
Runnable updateThread = new Runnable(){
public void run(){}
}; </div |