goman 发表于 2013-8-28 16:29

android的activity学习

7activity生命周期   
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
页: [1]
查看完整版本: android的activity学习