วิธีทำให้กระบวนการทำงานต่อไปในพื้นหลังใน phonegap android

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


person Neerav Shah    schedule 07.10.2013    source แหล่งที่มา


คำตอบ (2)


ใช้เมธอด setInterval ล้อม การเชื่อมต่อเครือข่าย ฟังก์ชั่นสถานะ (ใช้ phonegap api) อยู่ข้างใน ดังนั้นมันจะทริกเกอร์ตามช่วงเวลาที่กำหนด เมื่อสร้างการเชื่อมต่อแล้ว ให้อัปโหลดข้อมูลของคุณไปยังเซิร์ฟเวอร์

person RED.Skull    schedule 07.10.2013
comment
ฉันได้ลองเชื่อมต่อเครือข่ายแล้ว มันใช้เพื่อค้นหาประเภทการเชื่อมต่อโดยใช้ไม่ใช่ความแรงของสัญญาณ.... - person Neerav Shah; 07.10.2013
comment
ฉันต้องการสร้างบางอย่างเช่นสิ่งที่แอป Whatsapp ทำเมื่อผู้ใช้ส่งข้อความ และหากการเชื่อมต่อขาดหายไป แอปจะดำเนินการในเบื้องหลังเพื่อตรวจสอบการเชื่อมต่ออินเทอร์เน็ตอย่างต่อเนื่อง และเมื่อพบการเชื่อมต่อแล้ว แอปก็จะส่งข้อความดังกล่าว ฉันต้องการทำเช่นเดียวกันในขณะที่อัพโหลดข้อมูลไปยังเซิร์ฟเวอร์ - person Neerav Shah; 07.10.2013
comment
@NeeravShah คุณมีความคิดของฉันไหม ฉันใช้สิ่งนี้ในแอปพลิเคชัน LBS ของฉัน โดยจะอัปโหลดข้อมูลไปยังเซิร์ฟเวอร์เมื่อมีการเชื่อมต่ออินเทอร์เน็ตโดยใช้การเชื่อมต่อเครือข่าย setinterval + PG - person RED.Skull; 07.10.2013
comment
@RED.Skull จะเป็นอย่างไรถ้าฉันออกจากแอป มันจะจัดการกระบวนการพื้นหลังโดยใช้ setTimeout หรือไม่ - person Hunt; 02.09.2014

ให้ฉันเริ่มต้นด้วยการพยายามตอบคำถามแรกของคุณ: การประมวลผลเบื้องหลัง จริงๆ แล้ว มีหลายวิธีในการบรรลุเป้าหมายนี้ อย่างแรกคือกระบวนการเบื้องหลังจริง เช่น เหมือนกับ 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);
}

หวังว่านี่จะช่วยคุณไปในทิศทางที่ถูกต้อง ขอให้โชคดี.

person fredvanl    schedule 07.10.2013
comment
ฉันต้องการสร้างบางอย่างเช่นสิ่งที่แอป Whatsapp ทำเมื่อผู้ใช้ส่งข้อความ และหากการเชื่อมต่อขาดหายไป แอปจะดำเนินการในเบื้องหลังเพื่อตรวจสอบการเชื่อมต่ออินเทอร์เน็ตอย่างต่อเนื่อง และเมื่อพบการเชื่อมต่อแล้ว แอปก็จะส่งข้อความดังกล่าว ฉันต้องการทำเช่นเดียวกันในขณะที่อัพโหลดข้อมูลไปยังเซิร์ฟเวอร์ - person Neerav Shah; 07.10.2013
comment
ขออภัย ฉันพลาดไปว่าเป็นเรื่องเกี่ยวกับโครงการ 'phonegap' ฉันไม่คุ้นเคยกับสิ่งนั้น ฉันสังเกตเห็นแท็ก "Android" ใต้คำถามเดิมของคุณเท่านั้น - person fredvanl; 07.10.2013