ฉันต้องการสร้างแอปที่จะอัปโหลดข้อมูลไปยังเซิร์ฟเวอร์ รู้สึกว่าฉันกำลังอัปโหลดข้อมูลไปยังเซิร์ฟเวอร์ ดังนั้นจึงไม่จำเป็นว่าเมื่อผู้ใช้ทำการย้ายการเชื่อมต่อจะไม่คงที่ในบางครั้งในขณะที่การอัปโหลดการเชื่อมต่อข้อมูลอาจสูญหายไป ดังนั้นสิ่งที่ฉันต้องการคือหากการเชื่อมต่อขาดหาย บางสิ่งควรทำงานในพื้นหลัง ซึ่งจะค้นหาการเชื่อมต่อทันทีที่การเชื่อมต่อพร้อมใช้งาน จะเริ่มส่งข้อมูลไปยังเซิร์ฟเวอร์ ใครสามารถบอกฉันได้ว่าต้องทำอย่างไร มีวิธีใดบ้างที่จะหาความแรงของสัญญาณทั้ง wifi และ internet บนมือถือได้ ความคิดใด ๆ ที่ชื่นชม ขอบคุณล่วงหน้า.
วิธีทำให้กระบวนการทำงานต่อไปในพื้นหลังใน phonegap android
คำตอบ (2)
ใช้เมธอด setInterval ล้อม การเชื่อมต่อเครือข่าย ฟังก์ชั่นสถานะ (ใช้ phonegap api) อยู่ข้างใน ดังนั้นมันจะทริกเกอร์ตามช่วงเวลาที่กำหนด เมื่อสร้างการเชื่อมต่อแล้ว ให้อัปโหลดข้อมูลของคุณไปยังเซิร์ฟเวอร์
ให้ฉันเริ่มต้นด้วยการพยายามตอบคำถามแรกของคุณ: การประมวลผลเบื้องหลัง จริงๆ แล้ว มีหลายวิธีในการบรรลุเป้าหมายนี้ อย่างแรกคือกระบวนการเบื้องหลังจริง เช่น เหมือนกับ Linux daemon เพียงค้นหาบทความต่าง ๆ เกี่ยวกับเรื่องนั้น อีกประการหนึ่งคือการเริ่มเธรดจากเธรด GUI นี่เป็นตัวอย่างง่ายๆ:
public void onStartButtonClick(View view) {
Log.i("onStartButtonClick", "clicked");
mProgress = 0;
new Thread() {
@Override
public void run() {
Log.i("thread-" + Thread.currentThread().getId(), "run() method just started");
while (mProgress < 100) {
try {
Thread.sleep(mSleepTime);
mProgress++;
Log.i("thread-" + Thread.currentThread().getId(), "progress is " + mProgress);
mHandler.post(mUpdateGUI);
} catch (InterruptedException e) {
// e.printStackTrace();
}
}
}
}.start();
โปรดทราบว่านี่เป็นตัวอย่างที่เรียบง่ายเกินไป เพิ่ม mHandler.post() เป็นตัวเลือกในการเรียกกลับเธรด GUI ดั้งเดิม (ไม่อนุญาตให้เรียก GUI โดยตรงจากเธรด) ต้องใช้รหัสพิเศษในชั้นเรียนของคุณ:
// Need handler for callbacks to the UI thread
final Handler mHandler = new Handler();
// Create runnable for posting
final Runnable mUpdateGUI = new Runnable() {
public void run() {
updateProgress();
}
};
เมธอด updateProgress อนุญาตให้เรียกใช้บน GUI ตัวอย่าง:
private void updateProgress() {
mProgressBar.setProgress(mProgress);
}
หวังว่านี่จะช่วยคุณไปในทิศทางที่ถูกต้อง ขอให้โชคดี.