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 |