迅雷android面試題

來源:互聯網
上載者:User

標籤:筆試題

一、android幾種定時器的機制及區別。

答:在android中,經常用到的定時器主要有以下幾種實現:

1、採用handler與線程的sleep(long)方法

開啟一個線程,,每隔1s向Handler發送訊息

public class MainActivity extends Activity {private Handler myhandler;private static int timemessage=0x01;private int timer=0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myhandler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubif(msg.what==timemessage){System.out.println("timer="+(++timer));}}};new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubwhile(true){try {System.out.println("執行了");Thread.sleep(2000);myhandler.sendEmptyMessage(timemessage);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myhandler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubif (msg.what == timemessage) {System.out.println("timer=" + (++timer));}}};myhandler.postDelayed(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubmyhandler.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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myhandler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubif (msg.what == timemessage) {System.out.println("timer=" + (++timer));}}};timerobject=new Timer();timerobject.schedule(new TimerTask() {//1s後,在每隔1s做什麼事情@Overridepublic void run() {// TODO Auto-generated method stubmyhandler.sendEmptyMessage(timemessage);}}, 1000,1000);}}

二、利用Listview顯示姓名和年齡,採用SimpleAdapter實現。

public class MainActivity extends Activity {private ListView mylistview;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mylistview = (ListView) findViewById(R.id.listviewid);List<Map<String, Object>> listdata = new ArrayList<Map<String, Object>>();//每行顯示是一個Map對象for (int i = 0; i < 10; i++) {Map mapdata = new HashMap<String, Object>();mapdata.put("name", "limi");mapdata.put("age", "30");listdata.add(mapdata);}//第二個參數是ListView行布局//第三個參數為存放Map元素的key值//第四個參數將key值對應的元素在布局哪裡顯示SimpleAdapter myadpter = new SimpleAdapter(getApplicationContext(),listdata, R.layout.listviewdatalayout, new String[] { "name","age" }, new int[] { R.id.name, R.id.age });mylistview.setAdapter(myadpter);}}

三、Android單例模式應用及優點

單例模式確保某一個類只有一個執行個體。通過使用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;}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.