0 सवाल: एप्लिकेशन सस्पेंशन / पुनरारंभ के बाद अपडेट नहीं देखें

पर बनाया गया सवाल Tue, Apr 9, 2019 12:00 AM

मेरे पास एक घटक है जिसमें मैं एक ऑब्जर्वेबल की सदस्यता लेता हूं। कॉलबैक में मैं उस घटक में सदस्य चर सेट करता हूं। तब चर के मान घटक पृष्ठ पर प्रदर्शित होंगे।

लेकिन, जब ऐप स्कोप से बाहर हो जाता है (जैसे कि मैन्युअल रूप से ऐसा करने से या एंड्रॉइड ओएस-पॉपअप द्वारा लोकेशन की अनुमति मांगना) और वापस अंदर आता है, तो दृश्य अब अपडेट नहीं किया गया है (हालांकि कॉलबैक अभी भी नए मान प्राप्त करता है जैसे कंसोल लॉग साबित होता है)।

एक कार्यकारी उदाहरण में मुखपृष्ठ वर्ग की निम्न सामग्री के साथ एक रिक्त स्टार्टर ऐप होगा (कॉर्डोवा जियोलोकेशन प्लगइन की आवश्यकता है)

export class HomePage implements OnInit {

  lat = 0;
  long = 0;

  private subscription: Subscription;

  constructor(private geolocation: Geolocation,
              private zone: NgZone)
  {
  }

  ngOnInit()
  {
    console.log('constructor() Subscribing');
    this.renewSubscription();
  }

  renewSubscription()
  {
    if(this.subscription)
    {
      this.subscription.unsubscribe();
      this.subscription = null;
    }

    this.subscription = this.geolocation
                            .watchPosition({ enableHighAccuracy : true})
                            .subscribe(this.onLocationChange);
  }

  private onLocationChange = (location: Geoposition) =>
  {
    if(location.coords)
    {
      console.log(location.coords.latitude + ':' + location.coords.longitude);

        this.lat  = location.coords.latitude;
        this.long = location.coords.longitude;

    }
    else
    {
      console.dir('no coordinates');
      console.dir(location);
    }
  }

}

और होम पेज HTML सामग्री के प्रतिस्थापन के रूप में निम्नलिखित

{{ lat }}:{{ long }}

खोज के एक बिट के रूप में, मुझे संदेह है कि ऐप के फिर से शुरू होने के बाद कोड के कई कोड कोणीय क्षेत्र में रहते हैं या कुछ इस तरह से नहीं रहते हैं, क्योंकि 0600350991100101035062 और 0600350991111001001350 पर स्थापित करते समय स्पष्ट रूप से फिर से काम करता है

lat

बात यह है कि यह ऐप का बहुत ही सरलीकृत संस्करण है, जिस पर मैं काम कर रहा हूं - जिसमें बहुत अधिक सदस्यताएं और अप्रत्यक्ष हैं, इसलिए मैं कोणीय क्षेत्र के अंदर कोड डालने के लिए सक्षम नहीं था मैन्युअल रूप से।

क्या ऐप को फिर से शुरू करने के बाद कोणीय क्षेत्र के भीतर ऐप के कोड को चलाने का एक तरीका है जैसे कि यह एक सामान्य ऐप शुरू होने के बाद होगा?

संपादित करें

कोड को long में डालना या तो काम नहीं करेगा।

    
1
  1. ngOnInit () समस्या हो सकती है, यह केवल एक पृष्ठ दर्ज करते समय निकाल दिया जाता है। IonViewWillEnter () में
    this.zone.run(() => {
    
            this.lat  = location.coords.latitude;
            this.long = location.coords.longitude;
          });
    
    रखने की कोशिश करें। किसी पृष्ठ में प्रवेश करते समय आयन व्यूविल को हमेशा निकाल दिया जाता है।
    2019-04-09 13: 56: 57Z
  2. @ TomasVancoillie यह मान लेगा, कि एक ऐप के फिर से शुरू होने के बाद सदस्यताएँ हटा दी जाएंगी। जो मामला न हो। इसके अलावा, मैंने कोड को एक platform.resume- सदस्यता में डालने की कोशिश की, जिसने समस्या को हल नहीं किया।
    2019-04-10 08: 26: 56Z
    0 उत्तर                              0                         
    platform.resume
स्रोत रखा गया यहाँ