เราไม่สามารถสัมผัสเธรดพื้นหลังกับเธรดหลักได้โดยตรง ดังนั้นตัวจัดการจะรวบรวมเหตุการณ์ทั้งหมดที่มีอยู่ในเธรดหลักในคิวและครอบครองคิวนี้เพื่อคลาส looper
ใน android Handler ส่วนใหญ่จะใช้เพื่ออัปเดตเธรดหลักจากเธรดพื้นหลังหรืออื่น ๆ ที่ไม่ใช่เธรดหลัก มีสองวิธีในตัวจัดการ
-
โพสต์() − มันจะโพสต์ข้อความจากเธรดพื้นหลังไปยังเธรดหลักโดยใช้ looper
-
ส่งข้อความ() − หากคุณต้องการจัดระเบียบสิ่งที่คุณส่งไปยัง ui (ข้อความจากเธรดพื้นหลัง) หรือฟังก์ชัน ui คุณควรใช้ sendMessage()
ตัวอย่างนี้สาธิตวิธีจัดการในกล่องโต้ตอบความคืบหน้า
ขั้นตอนที่ 1 − สร้างโครงการใหม่ใน Android Studio ไปที่ไฟล์ ⇒ โครงการใหม่และกรอกรายละเอียดที่จำเป็นทั้งหมดเพื่อสร้างโครงการใหม่
ขั้นตอนที่ 2 − เพิ่มรหัสต่อไปนี้ใน res/layout/activity_main.xml
<รุ่นก่อนหน้า>ขั้นตอนที่ 3 − เพิ่มรหัสต่อไปนี้ใน src/MainActivity.java
นำเข้า android.app.ProgressDialog;นำเข้า android.os.Build;นำเข้า android.os.Bundle;นำเข้า android.os.Handler;นำเข้า android.support.annotation.RequiresApi;นำเข้า android.support.v7.app.AppCompatActivity นำเข้า android.view.View นำเข้า android.widget.Button นำเข้า android.widget.ProgressBar คลาสสาธารณะ MainActivity ขยาย AppCompatActivity ใช้ View.OnClickListener { Handler mHandler; ProgressDialog mProgressBar; @Override ป้องกันโมฆะ onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); ปุ่มปุ่ม =findViewById(R.id.button); button.setOnClickListener (นี้); } @RequiresApi(api =Build.VERSION_CODES.O) @Override public void onClick(View v) { switch (v.getId()) { case R.id.button:notificationDialog(); หยุดพัก; } } @RequiresApi(api =Build.VERSION_CODES.O) การแจ้งเตือนโมฆะส่วนตัว () { mHandler=new Handler(); mProgressBar=ProgressDialog ใหม่ (MainActivity.this); mProgressBar.setMax(100); mProgressBar.setProgressStyle (ProgressDialog.STYLE_HORIZONTAL); mProgressBar.show(); เธรดใหม่ (รันใหม่ได้ () { @Override public void run () { สำหรับ (int i =0; i <=100; i++) { int สุดท้าย currentProgressCount =i; ลอง { Thread.sleep (50); } catch (InterruptedException e) { e.printStackTrace (); } // อัปเดตเธรดพื้นหลังค่าเป็นเธรด UI mHandler.post (รันใหม่ได้ () { @Override public void run () { mProgressBar.setProgress (currentProgressCount); } }); } } }).เริ่ม(); }}
มาลองเรียกใช้แอปพลิเคชันของคุณกัน ฉันคิดว่าคุณได้เชื่อมต่ออุปกรณ์มือถือ Android จริงกับคอมพิวเตอร์ของคุณ ในการรันแอพจาก android studio ให้เปิดไฟล์กิจกรรมของโปรเจ็กต์ของคุณแล้วคลิกไอคอน Run Eclipse Run จากแถบเครื่องมือ เลือกอุปกรณ์มือถือของคุณเป็นตัวเลือก จากนั้นตรวจสอบอุปกรณ์มือถือของคุณซึ่งจะแสดงหน้าจอเริ่มต้นของคุณ
เมื่อผู้ใช้คลิกที่ปุ่มด้านบนจะแสดงกล่องโต้ตอบความคืบหน้าดังที่แสดงด้านล่าง