Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

ตัวจัดการใน Android ?


เราไม่สามารถสัมผัสเธรดพื้นหลังกับเธรดหลักได้โดยตรง ดังนั้นตัวจัดการจะรวบรวมเหตุการณ์ทั้งหมดที่มีอยู่ในเธรดหลักในคิวและครอบครองคิวนี้เพื่อคลาส looper

ใน android Handler ส่วนใหญ่จะใช้เพื่ออัปเดตเธรดหลักจากเธรดพื้นหลังหรืออื่น ๆ ที่ไม่ใช่เธรดหลัก มีสองวิธีในตัวจัดการ

  • โพสต์() − มันจะโพสต์ข้อความจากเธรดพื้นหลังไปยังเธรดหลักโดยใช้ looper

  • ส่งข้อความ() − หากคุณต้องการจัดระเบียบสิ่งที่คุณส่งไปยัง ui (ข้อความจากเธรดพื้นหลัง) หรือฟังก์ชัน ui คุณควรใช้ sendMessage()

ตัวอย่างนี้สาธิตวิธีจัดการในกล่องโต้ตอบความคืบหน้า

ขั้นตอนที่ 1 − สร้างโครงการใหม่ใน Android Studio ไปที่ไฟล์ ⇒ โครงการใหม่และกรอกรายละเอียดที่จำเป็นทั้งหมดเพื่อสร้างโครงการใหม่

ขั้นตอนที่ 2 − เพิ่มรหัสต่อไปนี้ใน res/layout/activity_main.xml

<รุ่นก่อนหน้า> <ปุ่ม android:id ="@+id/button" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:text ="คลิก" app:layout_constraintBottom_toBottomOf ="พาเรนต์" app:layout_constraintLeft_toLeftOf ="พาเรนต์" app:layout_constraintRight_toRightOf ="พาเรนต์" แอป:layout_constraintTop_toTopOf ="พาเรนต์" />

ขั้นตอนที่ 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 จากแถบเครื่องมือ เลือกอุปกรณ์มือถือของคุณเป็นตัวเลือก จากนั้นตรวจสอบอุปกรณ์มือถือของคุณซึ่งจะแสดงหน้าจอเริ่มต้นของคุณ

ตัวจัดการใน Android ?

เมื่อผู้ใช้คลิกที่ปุ่มด้านบนจะแสดงกล่องโต้ตอบความคืบหน้าดังที่แสดงด้านล่าง

ตัวจัดการใน Android ?


ตัวจัดการใน Android ?