ก่อนเข้าสู่ตัวอย่างเราควรรู้ว่า Intent service ใน Android คืออะไร Intent Service จะดำเนินการแบ็คกราวด์แบบอะซิงโครนัส เมื่อผู้ใช้เรียกใช้ startService() จากกิจกรรม จะไม่สร้างอินสแตนซ์สำหรับแต่ละคำขอและจะหยุดบริการหลังจากดำเนินการบางอย่างในคลาสบริการ มิฉะนั้น เราจำเป็นต้องหยุดบริการด้วยตนเองโดยใช้ stopSelf()
ตัวอย่างนี้สาธิตเกี่ยวกับวิธีการอัปเดต ui ต่อจาก Intent Service
ขั้นตอนที่ 1 − สร้างโครงการใหม่ใน Android Studio ไปที่ไฟล์ ⇒ โครงการใหม่และกรอกรายละเอียดที่จำเป็นทั้งหมดเพื่อสร้างโครงการใหม่
ขั้นตอนที่ 2 − เพิ่มรหัสต่อไปนี้ใน res/layout/activity_main.xml
ในโค้ดด้านบนนี้ เราได้ดูข้อความแล้ว เมื่อผู้ใช้ได้รับข้อมูลจาก Intent Service ก็จะอัปเดต
ขั้นตอนที่ 3 − เพิ่มรหัสต่อไปนี้ใน src/MainActivity.java
แพ็คเกจ com.example.andy.myapplication;นำเข้า android.content.BroadcastReceiver;นำเข้า android.content.Context;นำเข้า android.content.Intent;นำเข้า android.content.IntentFilter;นำเข้า android.os.Bundle;นำเข้า android os.Handler;นำเข้า android.support.v4.content.LocalBroadcastManager;นำเข้า android.support.v7.app.AppCompatActivity;นำเข้า android.view.View;นำเข้า android.widget.TextView;นำเข้า java.util.Timer;นำเข้าจาวา util.TimerTask; MainActivity คลาสสาธารณะขยาย AppCompatActivity { TextView text; BroadcastReceiver BroadcastReceiver =BroadcastReceiver ใหม่ () { @ แทนที่โมฆะสาธารณะ onReceive (บริบทบริบทเจตนาเจตนา) { String someValue =Intent.getStringExtra ("someName"); text.setText (บางค่า); } }; @Override ป้องกันโมฆะ onStart () { super.onStart (); IntentFilter IntentFilter =ใหม่ IntentFilter (); IntentFilter.addAction("com.example.andy.myapplication"); LocalBroadcastManager.getInstance (นี้).registerReceiver (เครื่องรับส่งสัญญาณ, ตัวกรองเจตนา); } @Override ป้องกันโมฆะ onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); ข้อความ =findViewById(R.id.text); ตัวจัดการตัวจัดการขั้นสุดท้าย =ตัวจัดการใหม่ (); TimerTask timertask =ใหม่ TimerTask () { @Override public void run () { handler.post (ใหม่ Runnable () { โมฆะสาธารณะ () { startService (เจตนาใหม่ (MainActivity.this, service.class)); } }); } }; ตัวจับเวลาจับเวลา =ตัวจับเวลาใหม่ (); timer.schedule (ตัวจับเวลา, 0, 10000); } @Override ป้องกันโมฆะ onStop() { super.onStop(); LocalBroadcastManager.getInstance(นี้).unregisterReceiver(broadcastReceiver); }}
สร้างคลาสชื่อไฟล์ service.class และเพิ่มรหัสต่อไปนี้ –
แพ็คเกจ com.example.andy.myapplication;import android.app.IntentService;import android.content.Intent;import android.os.IBinder;import android.support.v4.content.LocalBroadcastManager;บริการคลาสสาธารณะขยาย IntentService { บูลีนคงที่สาธารณะควรหยุด =เท็จ; บริการสาธารณะ () { ซูเปอร์ (service.class.getSimpleName ()); } @Override สาธารณะ IBinder onBind (เจตนาเจตนา) { คืนค่า null; } @Override ป้องกันโมฆะบน HandleIntent (เจตนาเจตนา) { เจตนาเจตนา 1 =เจตนาใหม่ ("com.example.andy.myapplication"); สำหรับ (int i =0; i <10; i++) { Intent1.putExtra ("someName", "Tutorialspoint.com "+i); LocalBroadcastManager.getInstance(นี้).sendBroadcast(intent1); ลอง { Thread.sleep(1000); } จับ (InterruptedException จ) { e.printStackTrace (); } } if(shouldStop) { หยุดตัวเอง (); กลับ; } }}
ขั้นตอนที่ 4 − เพิ่มรหัสต่อไปนี้ใน manifest.xml
<หมวดหมู่ android:name ="android.intent.category.LAUNCHER" />
มาลองเรียกใช้แอปพลิเคชันของคุณกัน ฉันคิดว่าคุณได้เชื่อมต่ออุปกรณ์มือถือ Android จริงกับคอมพิวเตอร์ของคุณ ในการรันแอพจาก android studio ให้เปิดไฟล์กิจกรรมของโปรเจ็กต์แล้วคลิกไอคอน Run จากแถบเครื่องมือ เลือกอุปกรณ์มือถือของคุณเป็นตัวเลือก จากนั้นตรวจสอบอุปกรณ์มือถือของคุณซึ่งจะแสดงหน้าจอเริ่มต้นของคุณ –
ในผลลัพธ์ข้างต้น เป็นการอัพเดท ui ต่อจาก Intent Service