การถ่ายโอนข้อมูลระหว่างกิจกรรม Android การสื่อสารระหว่างกิจกรรมและการบริการ การส่งผ่านข้อมูลระหว่างกิจกรรม

ในขณะที่กิจกรรมแบ่งรางวัลบล็อกใกล้เข้ามา ผู้คนจำนวนมากในพื้นที่ Bitcoin กังวลเกี่ยวกับศักยภาพที่ราคาของสกุลเงินดิจิทัลจะสูงขึ้น

นักขุดรายหนึ่งแสดงความกังวลอย่างจริงจังว่าเมื่อรายได้จากบล็อคลดลง อาจก่อให้เกิดเหตุการณ์ลูกโซ่ที่อาจนำไปสู่การฮาร์ดฟอร์คที่ใกล้จะเกิดขึ้น

เขาเป็นผู้ก่อตั้ง Bitbank ซึ่งเป็นบริษัทสกุลเงินดิจิทัลในประเทศจีนที่เป็นผู้นำในการดำเนินการขุดเหมืองที่ใหญ่ที่สุดในโลก BW เพิ่งเข้าร่วมกลุ่ม Bitbank โดยเฉลี่ยแล้ว BW.com คิดเป็นประมาณ 10% ของแฮชเรตทั้งหมด (จำนวนแฮชที่นักขุดค้นพบต่อวินาที) ซึ่งเป็นความสำเร็จที่น่าประทับใจเมื่อพิจารณาจากการเปิดตัวเมื่อสองปีที่แล้ว

กัวกล่าวว่า, เขากลัวว่าหากราคาของ Bitcoin ไม่เพิ่มขึ้นอย่างมีนัยสำคัญก่อนหรือหลังการลดลงครึ่งหนึ่งทันที แฮชเรตที่มากเกินไปจะออกจากเครือข่ายเนื่องจากการขุดที่ไม่ได้ผลกำไร ทำให้แทบจะเป็นไปไม่ได้เลยที่จะตรวจสอบธุรกรรม

Bitcoin halving คือเหตุการณ์ที่เกิดขึ้นทุกๆ สี่ปี โดยอุปทานของ Bitcoin ในเวลาต่อมาจะถูกแบ่งครึ่งหนึ่ง เมื่อ Bitcoin เปิดตัวในเดือนมกราคม 2552 จะมีรางวัล 50 BTC สำหรับแต่ละบล็อก เมื่อวันที่ 28 พฤศจิกายน 2555 เกือบสี่ปีหลังจากการเปิดตัว Bitcoin blockchain ครั้งแรก รางวัลลดลงครึ่งหนึ่ง - 25 BTC

Satoshi เพิ่มการลดจำนวนลงครึ่งหนึ่งเพื่อให้โค้ดสามารถสร้าง Bitcoins ใหม่เมื่อเครือข่ายขยายขนาด แต่ยังช่วยให้สามารถเข้าใกล้ขั้นตอนสุดท้ายที่ 21 ล้านได้อย่างค่อยเป็นค่อยไป อย่างไรก็ตาม การลดลงอย่างกะทันหันอาจทำให้นักขุดที่ทำงานด้วยอัตรากำไรต่ำเกิดความตกใจได้

Guo เชื่อว่านักขุดที่ใช้ฮาร์ดแวร์ที่มีประสิทธิภาพน้อยกว่าจะถูกบังคับให้ละทิ้งเครือข่าย หากการชำระเงินลดลงอย่างมาก

Hardfork สำหรับความยากลำบาก

คนงานเหมืองสร้างรายได้ด้วยการสร้างรายได้มากกว่าที่พวกเขาใช้ไปกับค่าไฟฟ้าและค่าใช้จ่ายที่เกี่ยวข้องเพื่อให้เครือข่ายทำงานต่อไป การเพิ่มผลกำไรสูงสุดในการขุด Bitcoin นั้นเกี่ยวกับจำนวนฮาร์ดแวร์ที่ใครบางคนสามารถใช้เพื่อแก้ปัญหาบล็อกถัดไป

ยิ่งพลังการขุดมากเท่าไร โอกาสที่นักขุดจะได้รับผลลัพธ์เชิงบวกก็จะยิ่งมากขึ้นเท่านั้น

เพื่อแก้ปัญหานี้ Nakamoto ได้รวมสมการที่ซับซ้อนไว้ในโค้ด โดยทุกๆ 2,016 บล็อกโค้ดนี้จะวิเคราะห์ว่าพลังแฮชบนเครือข่ายมีจำนวนเท่าใด และเพิ่มหรือลดความยาก ในปีที่ผ่านมามีเพิ่มขึ้นอย่างมาก

ความกังวลของ Go เกิดจากการกำหนดเวลาแบบตายตัวในการคำนวณความยากลำบาก หากมีการเพิ่มพลังแฮชมากขึ้นในวันพรุ่งนี้ จะสามารถขุดบล็อกได้เร็วกว่าปกติ ซึ่งจะเป็นการเพิ่มผลกำไรให้กับนักขุด

Guo ยังอธิบายด้วยว่าหากนักขุดส่วนใหญ่ออฟไลน์ สิ่งนี้จะลดพลังการขุดโดยรวมลงอย่างมีนัยสำคัญ ซึ่งจะลดลงเมื่อเกิดปัญหาครั้งต่อไป

การลดลงนี้สามารถนำไปสู่เวลาการทำธุรกรรมที่ช้าลง และสร้างความปวดหัวอย่างมากสำหรับผู้ที่ต้องการกระจายธุรกรรม ในสถานการณ์กรณีที่เลวร้ายที่สุด สถานการณ์นี้จะนำไปสู่วิกฤตความเชื่อมั่นในสกุลเงินดิจิทัลและการขายออกโดยสิ้นเชิง ราคา Bitcoin ที่ลดลงจะทำให้นักขุดส่วนใหญ่ปิดฮาร์ดแวร์ของตน

ความสงสัยในความจริงจัง

ยังมีชุมชนอื่นๆ ที่เกี่ยวข้องกับการลดจำนวนลงครึ่งหนึ่งด้วย เนื่องจากเหตุการณ์นี้เกิดขึ้นมาแล้วครั้งหนึ่งโดยไม่รบกวนเครือข่าย พวกเขาจึงรู้สึกสบายใจพอที่จะมุ่งหน้าไปยังกิจกรรมต่อไป

บ็อบบี้ ลี CEO ของ BTCC ซึ่งเป็นบริษัทแลกเปลี่ยน Bitcoin ในเซี่ยงไฮ้ซึ่งมีกลุ่มการขุด Bitcoin ที่ใหญ่เป็นอันดับสามด้วยแฮชเรตประมาณ 16% ตกลงว่าความจุจะลดลง แต่เขาไม่เชื่อว่าการลดลงจะมีขนาดใหญ่เท่ากับ Chandler Guo คาดการณ์

“หลังจากการขุด แน่นอนว่า แฮชเรตจะลดลงเล็กน้อย หรืออาจจะเหลือ 5-10% แต่ไม่เกิน 30%” บ็อบบี้ ลี กล่าว “เราเคยเห็นสิ่งนี้เกิดขึ้นในสกุลเงินดิจิทัลอื่นๆ ที่มีการแบ่งบล็อก ดังนั้นเมื่อบล็อกลดลงครึ่งหนึ่ง แฮชเรตจะลดลงจริงๆ นี่เป็นสิ่งที่คาดหวังไว้มาก”

เขากล่าวต่อไปว่านี่ไม่ใช่วิกฤตที่เกิดขึ้นสำหรับ Bitcoin เมื่อเปรียบเทียบกับ Donald Trump นักธุรกิจชาวอเมริกันผู้เป็นที่ถกเถียงซึ่งปัจจุบันลงสมัครชิงตำแหน่งประธานาธิบดีแห่งสหรัฐอเมริกา

“สำหรับคนที่ไม่ชอบทรัมป์ พวกเขาคิดว่านี่เป็นวิกฤตครั้งใหญ่ แต่หลังจากนั้นไม่กี่สัปดาห์ ความวิตกกังวลก็หายไป” เขาอธิบาย

“ประเด็นสำคัญคือการลดพลังงานจะไม่กระทบต่อความปลอดภัยของเครือข่ายหรือทำให้เสี่ยงต่อการถูกโจมตี นอกจากนี้เรายังเชื่อมั่นว่ากิจกรรมการลดรางวัลที่กำลังจะเกิดขึ้นจะส่งผลดีต่ออุตสาหกรรมโดยรวม เนื่องจากจะกระตุ้นให้บริษัท Bitcoin สร้างสรรค์สิ่งใหม่ ๆ” Valery Vavilov ซีอีโอของ BitFury กล่าว

ไม่มีปัญหาถ้าราคาขึ้น

แน่นอนว่าทั้งหมดนี้จะไม่เป็นปัญหาหากราคาสูงขึ้น
จากนั้นนักขุดจะสามารถทำกำไรได้เหมือนเดิม แม้ว่าจำนวน bitcoin ที่สร้างโดยแต่ละบล็อกจะลดลงครึ่งหนึ่งก็ตาม

“หากราคาไม่ขยับขึ้น ก็จะทำให้เกิดปัญหา” Guo กล่าว

การใช้ทฤษฎีเศรษฐศาสตร์แบบดั้งเดิม การผสมผสานระหว่างราคาของ Bitcoin และความยากในการขุด จะช่วยคืนโชคลาภก่อนที่รางวัลบล็อกจะถูกตัด

อุปทาน Bitcoin ถูกจำกัดอยู่ที่ 21 ล้านเหรียญ ดังนั้นการขุดจึงมีเกณฑ์ที่แน่นอนเช่นกัน การปล่อยเหรียญจะดำเนินการตามแผนที่เกี่ยวข้องกับการลดรางวัลสำหรับการค้นหาบล็อกทีละน้อย การลดรางวัลลงครึ่งหนึ่งจะเกิดขึ้นทุกๆ สี่ปี และไม่เพียงส่งผลต่อรายได้ของนักขุดเท่านั้น แต่ยังรวมถึงต้นทุนของทองคำดิจิทัลด้วย

บล็อกคืออะไร?

Bitcoin ทำงานบนเทคโนโลยีที่เกี่ยวข้องกับการก่อตัวของบล็อกข้อมูลเกี่ยวกับธุรกรรมที่เสร็จสมบูรณ์ บล็อกใหม่ถูกสร้างขึ้นโดยการบันทึกข้อมูลเกี่ยวกับธุรกรรมใหม่บนเครือข่ายอย่างถาวร และมีข้อมูลเกี่ยวกับการดำเนินการก่อนหน้านี้ทั้งหมด

แต่ละบล็อกมีส่วนหัวแต่ละส่วนและมีวิธีแก้ปัญหาเฉพาะตัว ในการสร้างมันขึ้นมา นักขุดที่ใช้เทคโนโลยีคอมพิวเตอร์ จำเป็นต้องแก้ไขแฮชและเลือกลายเซ็น นักขุดที่ประสบความสำเร็จจะได้รับรางวัลที่กำหนดโดยเครือข่าย และธุรกรรมใหม่ทั้งหมดที่เพิ่มโดยบล็อกนี้จะถือว่าได้รับการยืนยัน ข้อมูลในบล็อกที่เซ็นชื่อไม่สามารถเปลี่ยนแปลงได้

เครือข่าย Bitcoin ได้รับการออกแบบในลักษณะที่สร้างโดยเฉลี่ย 6 บล็อกต่อชั่วโมง และทุกๆ ปี 2559 บล็อกไคลเอนต์ Bitcoin แต่ละรายจะเปรียบเทียบความเร็วของการสร้างบล็อกกับตัวบ่งชี้มาตรฐานของความเร็วที่ต้องการ และตั้งค่าความยากของเครือข่ายใหม่

ทำไม Bitcoin ถึงลดลงครึ่งหนึ่ง?

เป้าหมายหลักของ Bitcoin คือการสร้างวิธีการชำระเงินทางเลือกให้กับระบบธนาคารและเงินทั่วไป ข้อเสียเปรียบหลักของวิธีปกติคืออัตราเงินเฟ้อ

เพื่อป้องกันภาวะเงินเฟ้อ จึงมีการสร้างปัจจัยด้านกฎระเบียบหลายประการไว้ในรหัส Bitcoin:

  • ปัญหาที่จำกัด;
  • เพิ่มความซับซ้อน
  • รางวัลบล็อกลดลงครึ่งหนึ่ง

การลดจำนวนลงครึ่งหนึ่ง (การลดจำนวนลงครึ่งหนึ่ง) เป็นส่วนหนึ่งของกฎระเบียบภายในระบบที่ป้องกันอัตราเงินเฟ้อและการสร้างบล็อกและเหรียญใหม่เร็วเกินไป หลังจากการลดลงครึ่งหนึ่ง นักขุดที่ลงนามในบล็อกจะได้รับรางวัลครึ่งหนึ่ง รางวัลจะลดลงโดยอัตโนมัติหลังจากบล็อกสุดท้ายจากขีดจำกัด 210,000 ที่จัดสรรโดยระบบถูกขุด

รางวัลบล็อก Bitcoin ปัจจุบันคืออะไร?

ตลอดระยะเวลา 8 ปีที่มีสกุลเงินดิจิทัลตัวแรกเกิดขึ้น รางวัลได้ลดลงมาแล้วสองครั้ง และการลดครึ่งหนึ่งครั้งสุดท้ายเกิดขึ้นในปี 2559 ซึ่งกำหนดว่าบล็อก Bitcoin ในปัจจุบันคืออะไรและรางวัลสำหรับบล็อกนั้น หลังจากแก้ไขบล็อกปัจจุบันได้แล้ว นักขุดจะได้รับ 12.5 BTC เป็นรางวัล ตามที่ผู้เชี่ยวชาญระบุ หลังจากการลดลงครึ่งหนึ่งในปี 2559 มีผู้ใช้จำนวนเล็กน้อยหยุดการขุดและมีผู้ใช้รายใหม่เข้ามาแทนที่อย่างรวดเร็ว

Bitcoin ลดลงครึ่งหนึ่งในประวัติศาสตร์และผลที่ตามมา

นับตั้งแต่เปิดตัวในปี 2552 รางวัลเริ่มต้นคือ 50 BTC การลดลงครึ่งหนึ่งครั้งแรกเกิดขึ้นในปี 2012 หลังจากนั้นรางวัลก็ลดลงเหลือ 25 BTC ไม่มีการกระโดดอย่างรวดเร็วของอัตรา แต่ราคาของหนึ่ง BTC ค่อยๆ เพิ่มขึ้นจาก $12 เป็น $500 และที่จุดสูงสุดอยู่ที่ $1,200

การลดลงครึ่งหนึ่งครั้งถัดไปเกิดขึ้นในช่วงฤดูร้อนปี 2559 หลังจากนั้นก็เริ่มเติบโต และในเดือนมกราคม 2017 ราคาคงที่ที่ 1,100 ดอลลาร์ และเมื่อต้นปี 2018 Bitcoin ก็แตะจุดสูงสุดที่ 20,000 ดอลลาร์

วันที่ลดรางวัลบล็อคถัดไป

ทุกๆ 210,000 บล็อก จะมีการลดลงครึ่งหนึ่ง ใช้เวลา 4 ปีกว่าจะได้มา ตามเคาน์เตอร์การลดจำนวนลงครึ่งหนึ่ง กำลังรอเราอยู่ในวันที่ 21 พฤษภาคม 2020 และหลังจากนั้นรางวัลจะเป็น 6.25 BTC แทนที่จะเป็น 12.5 BTC ในปัจจุบัน

ข้อสรุป

จากสถิติของการลดค่าตอบแทนก่อนหน้านี้ เราสามารถสรุปได้ว่าการลดครึ่งหนึ่งของ Bitcoin ครั้งต่อไปจะไม่ทำให้อัตราเพิ่มขึ้นอย่างรวดเร็ว แต่จะมีแนวโน้มที่จะมีมูลค่าเพิ่มขึ้นทีละน้อย เพื่อชดเชยรางวัลที่สูญเสียไป อาจแนะนำให้เพิ่มค่าธรรมเนียมระบบ

สวัสดี

จำเป็นต้องถ่ายโอนข้อมูลที่ได้รับผ่าน UART ไปยังกิจกรรม ซึ่งสามารถทำได้โดยการสร้างเธรดในกิจกรรมเพื่อจัดระเบียบ while loop (!isInterrupted()) และอ่านข้อมูลจากบัฟเฟอร์ UART หลังจากนั้นโดยการเรียกกิจกรรมเธรด UI - MainActivity.this.runOnUiThread(new Runnable() ให้ดำเนินการที่จำเป็นกับ Activity นี้ แต่ถ้าเราเรียกกิจกรรมอื่นจากกิจกรรมหลักแล้วเธรดที่จัดจะไม่อนุญาตให้ส่งข้อมูลไปที่ กิจกรรมที่สร้างขึ้นใหม่ หากฉันเข้าใจถูกต้อง เพื่อให้ข้อมูลจากสตรีมถูกถ่ายโอนไปยังกิจกรรมใด ๆ จะต้องสร้างสตรีมไม่ใช่ในกิจกรรม แต่ในบริการ

คำถาม: ข้อมูลมาถึงผ่าน UART ในสตรีม (ซึ่งสร้างใน Servce) จำเป็นต้องถ่ายโอนข้อมูลไปยังกิจกรรมซึ่งขณะนี้เปิดใช้งานอยู่ จะทำเช่นนี้ได้อย่างไรและจะเสร็จสิ้นหรือไม่

1 คำตอบ

ในแต่ละกิจกรรม คุณสร้างตัวจัดการ ในเมธอด onResume() ของกิจกรรมนี้ แสดงว่า bindService() เสร็จสิ้นแล้ว หนึ่งในพารามิเตอร์ที่มีคืออินเทอร์เฟซ ServiceConnection นำไปปฏิบัติด้วยกิจกรรมเดียวกันเป็นอย่างน้อย ใช้เมธอด onServiceConnected() ในนั้น ในการเรียกกลับนี้ หนึ่งในพารามิเตอร์คือตัวบริการเอง ดังนั้นให้เรียกเมธอด setHandler() ของบริการนี้เอง ส่งตัวจัดการที่อยู่ในกิจกรรมปัจจุบันไปที่นั่น แต่ส่งข้อมูลขาเข้าผ่าน UART ไปยัง Service บน Handler นี้ อย่างไรก็ตาม โดยปกติแล้ว Handler จะทำงานบนเธรดหลัก ดังนั้นจึงไม่จำเป็นต้องเรียกใช้ OnUiThread

อัปเดตครั้งล่าสุด: 04/03/2018

วัตถุเจตนาใช้ในการถ่ายโอนข้อมูลระหว่างสองกิจกรรม ด้วยเมธอด putExtra() คุณสามารถเพิ่มคีย์และค่าที่เกี่ยวข้องได้

ตัวอย่างเช่น การส่งสตริง "Hello World" ด้วยคีย์ "hello" จากกิจกรรมปัจจุบันไปยัง SecondActivity:

// การสร้างวัตถุ Intent เพื่อเรียกใช้ SecondActivity Intent intent = new Intent (นี่คือ SecondActivity.class); // ส่งวัตถุด้วยคีย์ "hello" และค่า "Hello World" intent.putExtra("hello", "Hello World"); // เริ่ม SecondActivity startActivity (เจตนา);

ในการถ่ายโอนข้อมูล จะใช้เมธอด putExtra() ซึ่งช่วยให้คุณถ่ายโอนข้อมูลประเภทที่ง่ายที่สุดเป็นค่า - String, int, float, double, long, short, byte, char, arrays ของประเภทเหล่านี้ หรือ Serializable วัตถุอินเทอร์เฟซ

หากต้องการรับข้อมูลที่ส่งเมื่อโหลด SecondActivity คุณสามารถใช้เมธอด get() ซึ่งส่งผ่านอ็อบเจ็กต์คีย์:

อาร์กิวเมนต์มัด = getIntent().getExtras(); ชื่อสตริง = arguments.get("hello").toString(); // สวัสดีชาวโลก

ขึ้นอยู่กับประเภทของข้อมูลที่เรากำลังส่ง เราสามารถใช้วิธีการต่างๆ บนอ็อบเจ็กต์ Bundle เมื่อเราได้รับข้อมูล ทั้งหมดใช้คีย์วัตถุเป็นพารามิเตอร์ สิ่งสำคัญ:

    get() : วิธีการทั่วไปที่ส่งคืนค่าประเภท Object ดังนั้นฟิลด์รับจึงต้องแปลงค่านี้เป็นประเภทที่ต้องการ

    getString() : ส่งคืนวัตถุ String

    getInt() : ส่งกลับค่า int

    getByte() : ส่งกลับค่าไบต์

    getChar() : ส่งกลับค่าถ่าน

    getShort() : ส่งกลับค่าประเภท short

    getLong() : ส่งกลับค่ายาว

    getFloat() : ส่งกลับค่าทศนิยม

    getDouble() : คืนค่าสองเท่า

    getBoolean() : ส่งกลับค่าบูลีน

    getCharArray() : ส่งคืนอาร์เรย์ของวัตถุถ่าน

    getIntArray() : ส่งคืนอาร์เรย์ของวัตถุ int

    getFloatArray() : ส่งคืนอาร์เรย์ของวัตถุลอย

    getSerializable() : ส่งคืนวัตถุอินเทอร์เฟซแบบอนุกรม

ขอให้เรามีสองกิจกรรมที่กำหนดไว้ในโครงการของเรา: MainActivity และ SecondActivity

ในโค้ด SecondActivity เราจะกำหนดข้อมูลการรับ:

แพ็คเกจ com.example.eugene.serializeapp; นำเข้า android.support.v7.app.AppCompatActivity; นำเข้า android.os.Bundle; นำเข้า android.widget.TextView; คลาสสาธารณะ SecondActivity ขยาย AppCompatActivity ( @Override ป้องกันโมฆะ onCreate (Bundle saveInstanceState) ( super.onCreate (savedInstanceState); TextView textView = new TextView (นี้); textView.setTextSize (20); textView.setPadding (16, 16, 16, 16 อาร์กิวเมนต์ Bundle = getIntent().getExtras(); if(arguments!=null)( String name = arguments.get("name").toString(); String company = arguments.getString("company"); int price = arguments.getInt("price"); textView.setText("Name: " + name + "\nCompany: " + company + "\nPrice: " + price ) setContentView(textView) )

ในกรณีนี้ ใน SecondActivity เราได้รับข้อมูลทั้งหมดจากวัตถุ Bundle และแสดงในช่องข้อความ TextView สันนิษฐานว่าองค์ประกอบสามรายการจะถูกส่งผ่านไปยังกิจกรรมนี้ - สองสตริงที่มีชื่อคีย์และบริษัท และตัวเลขที่มีราคาคีย์

ตอนนี้เรามากำหนดการถ่ายโอนข้อมูลไปยัง SecondActivity ตัวอย่างเช่น ลองกำหนดอินเทอร์เฟซต่อไปนี้สำหรับ MainActivity ในไฟล์ Activity_main.xml:

มีคำถามหรือไม่?

แจ้งการพิมพ์ผิด

ข้อความที่จะส่งถึงบรรณาธิการของเรา: