Andorid啓動頁倒計時用Handler實現

  • 大家好,倉促的時間裏面,爲大家帶來點乾貨,可能大家在別的地方也看見過類似的,但是我還是想整理出來,希望大家喜歡。

  • 在安卓很早的時候,很多操作都是在主線程中完成的,隨着用戶體驗和app的友好性的不斷提升,android把耗時操作都放在了子線程中進行。由此我們的handler就尤爲重要了,簡單的介紹下handler;

  • -

一、Handler的定義:
Handler主要用於異步消息的處理:當發出一個消息之後,首先進入一個消息隊列,發送消息的函數即刻返回,而另外一個部分在消息隊列中逐一將消息取出,然後對消息進行處理,也就是發送消息和接收消息不是同步的處理。 這種機制通常用來處理相對耗時比較長的操作。
- 二、Handler一些特點
- 傳遞Message。用於接受子線程發送的數據, 並用此數據配合主線程更新UI。
- 傳遞Runnable對象。用於通過Handler綁定的消息隊列,安排不同操作的執行順序。
post(Runnable)
postAtTime(Runnable,long)
postDelayed(Runnable,long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message,long)
sendMessageDelayed(Message,long)

好了說了這麼多,那我們就用一個實例來看下Handler是怎麼完成的吧;
activity_splash.xml 啓動頁的代碼

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/tv_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="5s"
        android:textColor="@color/colorAccent"
        android:textSize="20sp" />
</RelativeLayout>

SplashActivity 中的代碼

public class SplashActivity extends Activity {

private static int TIME = 5;
private TextView mTime;
private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case 1:
                TIME--;
                mTime.setText(TIME + "s");
                if (TIME > 0) {
                    Message message = handler.obtainMessage(1);
                    handler.sendMessageDelayed(message, 1000);      // send message
                } else {
                //跳轉到主界面
                    goHome();
                }
        }
        super.handleMessage(msg);
    }
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_splash);
    mTime = (TextView) findViewById(R.id.tv_time);
    Message message = handler.obtainMessage(1);
    handler.sendMessageDelayed(message, 1000);


}
private void goHome() {
    Intent intent = new Intent(SplashActivity.this, MainActivity.class);
    startActivity(intent);
    finish();
} }

總結:通過 handler.sendMessageDelayed(message, 1000); 方法,我們設置的是1秒鐘通知handler改變我們界面的倒計時,我爲什麼在佈局文件中的TextView中填寫一個android:text=”5s” 這個是主要當你打開程序的時候出現短暫的界面空白所做的。我自己實踐了感覺還不錯,希望大家能夠喜歡,也希望老鳥們不要嫌棄~

喜歡的也可以掃碼我的公衆號關注一下哦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章