开发网站用什么语言好,wordpress拷站,网站建设优化托管,网站后台密码重置目录
3、 认识Android的主线程(又称UI线程)
复习#xff1a; 各进程(Process)里的主线程编辑
UI线程的责任#xff1a; 迅速处理UI事件
举例 3、 认识Android的主线程(又称UI线程)
复习#xff1a; 各进程(Process)里的主线程
UI线程的责任#xff1a; 迅速处理UI事…目录
3、 认识Android的主线程(又称UI线程)
复习 各进程(Process)里的主线程编辑
UI线程的责任 迅速处理UI事件
举例 3、 认识Android的主线程(又称UI线程)
复习 各进程(Process)里的主线程
UI线程的责任 迅速处理UI事件
在Android里关照UI画面的事件(Event)是UI线程的重要职责而且是它的专属职责其它子线程并不可以插手存取UI画面上的对象(如TextView)呢!由于Android希望UI线程能够给予用户的要求做快速的反应。如果UI 线程花费太多时间做幕后的事情而在UI事件发生之后让用户等待超过5秒钟而未处理的话Android就会向用户道歉。
// ac01.java
// ……..
public class ac01 extends Activity implements OnClickListener {public TextView tv;private Button btn, btn2, btn3;public void onCreate(Bundle icicle) {super.onCreate(icicle);LinearLayout layout new LinearLayout(this);layout.setOrientation(LinearLayout.VERTICAL);btn new Button(this); btn.setId(101);btn.setBackgroundResource(R.drawable.heart);btn.setText(Block UI thread); btn.setOnClickListener(this);LinearLayout.LayoutParams param new LinearLayout.LayoutParams(150,50);param.topMargin 10;layout.addView(btn, param);btn2 new Button(this); btn2.setId(102);btn2.setBackgroundResource(R.drawable.heart);btn2.setText(Show); btn2.setOnClickListener(this);layout.addView(btn2, param);btn3 new Button(this); btn3.setId(103);btn3.setBackgroundResource(R.drawable.heart);btn3.setText(Exit); btn3.setOnClickListener(this);layout.addView(btn3, param);tv new TextView(this);tv.setTextColor(Color.WHITE); tv.setText();LinearLayout.LayoutParams param2 new LinearLayout.LayoutParams(150, 60);param2.topMargin 10;layout.addView(tv, param2);setContentView(layout);//------------------------------setTitle(please press Block... Show );tv.setText(then wait for 5 min...);}public void onClick(View v) {switch(v.getId()){case 101:try { Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}break;case 102: break;case 103: finish(); break;}}
}
此程式執行時畫面上先出現 連續按下Block UI thread和Show按鈕然後等待5秒鐘就會出現剛才所說的道歉提示如下圖 举例
如果想要一边秀动画一边播音乐时使用单一线程来控制一边秀动画一边播音乐如下图所示又会如何呢? 主线程可以诞生多个子线程来分担其工作尤其是比较冗长费时的幕后服务工作例如播放动画的背景音乐、或从网络下载影片等。于是主线程就能专心于处理UI画面的事件了。再如当你开发一个游戏程序时如果你希望游戏循环不受UI事件的干扰或希望游戏循环(GameLoop)不要阻塞住UI线程的话就不适合拿UI线程去跑游戏循环了。