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

จะอัปเดต ui จาก Intent Service ใน Android ได้อย่างไร


ก่อนเข้าสู่ตัวอย่าง เราควรรู้ว่า 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 support.v7.app.AppCompatActivity นำเข้า android.view.View นำเข้า android.widget.TextView คลาสสาธารณะ MainActivity ขยาย AppCompatActivity { ข้อความ TextView; BroadcastReceiver broadcastReceiver =ใหม่ BroadcastReceiver () { @ แทนที่โมฆะสาธารณะ onReceive (บริบทบริบทเจตนาเจตนา) { String s1 =Intent.getStringExtra ("DATAPASSED"); text.setText(s1); } }; @Override ป้องกันโมฆะ onStart () { super.onStart (); IntentFilter IntentFilter =ใหม่ IntentFilter (); IntentFilter.addAction("com.example.andy.myapplication"); registerReceiver (เครื่องรับส่งสัญญาณ, ตัวกรองเจตนา); } @Override ป้องกันโมฆะ onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); ข้อความ =findViewById(R.id.text); text.setOnClickListener (View.OnClickListener ใหม่ () { @แทนที่โมฆะสาธารณะ onClick (ดู v) { startService (เจตนาใหม่ (MainActivity.this, service.class)); } }); } @Override ป้องกันโมฆะ onStop() { super.onStop(); unregisterReceiver (เครื่องรับออกอากาศ); }}

ในโค้ดด้านบนนี้ เราได้สร้างคลาสบริการและตัวรับส่งไดนามิกแบบไดนามิกดังที่แสดงด้านล่าง –

@Overrideprotected โมฆะ onStart() { super.onStart(); IntentFilter IntentFilter =ใหม่ IntentFilter (); IntentFilter.addAction("com.example.andy.myapplication"); registerReceiver (broadcastReceiver, IntentFilter);}…………………………………………………………..BroadcastReceiver broadcastReceiver =ใหม่ BroadcastReceiver () { @Override public void onReceive (บริบทบริบท, เจตนาเจตนา) { String s1 =Intent.getStringExtra("DATAPASSED"); text.setText(s1); }};…………………………………………………………………………..@Overrideprotected void onStop() { super.onStop(); unregisterReceiver(broadcastReceiver);}

สร้างคลาสชื่อไฟล์ service.class และเพิ่มรหัสต่อไปนี้ –

แพ็คเกจ com.example.andy.myapplication;import android.app.IntentService;import android.content.Intent;import android.os.IBinder;บริการคลาสสาธารณะขยาย IntentService { บริการสาธารณะ () { super (service.class. getSimpleName()); } @Override สาธารณะ IBinder onBind (เจตนาเจตนา) { คืนค่า null; } @Override ป้องกันโมฆะบน HandleIntent (เจตนาเจตนา) { เจตนาเจตนา 1 =เจตนาใหม่ (); Intent1.setAction("com.example.andy.myapplication"); Intent1.putExtra("DATAPASSED", "Tutorialspoint.com"); sendBroadcast(เจตนา1); }}

ขั้นตอนที่ 4 − เพิ่มรหัสต่อไปนี้ใน manifest.xml

      <หมวดหมู่ android:name ="android.intent.category.LAUNCHER" />    

มาลองเรียกใช้แอปพลิเคชันของคุณกัน ฉันคิดว่าคุณได้เชื่อมต่ออุปกรณ์มือถือ Android จริงกับคอมพิวเตอร์ของคุณ ในการรันแอพจาก android studio ให้เปิดไฟล์กิจกรรมของโปรเจ็กต์แล้วคลิกไอคอน Run จากแถบเครื่องมือ เลือกอุปกรณ์มือถือของคุณเป็นตัวเลือก จากนั้นตรวจสอบอุปกรณ์มือถือของคุณซึ่งจะแสดงหน้าจอเริ่มต้นของคุณ –

จะอัปเดต ui จาก Intent Service ใน Android ได้อย่างไร

ในผลลัพธ์ข้างต้น จะแสดงหน้าจอเริ่มต้นของแอปพลิเคชัน เมื่อผู้ใช้คลิกที่ "เริ่มบริการ" จะเป็นการเริ่มต้นบริการและอัปเดตการดูข้อความดังที่แสดงด้านล่าง -

จะอัปเดต ui จาก Intent Service ใน Android ได้อย่างไร