मेरा एंड्रॉइड 4+ ऐप एक कस्टम वेब सेवा से जुड़ा हुआ है जिसका उपयोग हर कुछ मिनट में डेटा सिंक करने के लिए किया जाता है। यह सुनिश्चित करने के लिए कि ऑनलाइन डेटा हमेशा अद्यतित रहता है, जब भी ऐप बंद हो जाता है/पृष्ठभूमि में भेजता है, तो मैं सिंक को ट्रिगर करना चाहता हूं।एंड्रॉइड ऐप बंद/पृष्ठभूमि पर सेट होने पर पृष्ठभूमि कार्य निष्पादित करने के लिए कैसे करें?
तहत आईओएस यह काफी आसान है:
- आप लंबी चलने वाली पृष्ठभूमि कार्य शुरू करने के लिए AppDelegate
- उपयोग
beginBackgroundTaskWithName:
मेंapplicationDidEnterBackground:
को सुनें और निलंबित किया जा रहा से बचने के लिए, जबकि कार्य अभी भी
एंड्रॉइड पर यह कैसे करें?
पहली समस्या है, कि applicationDidEnterBackground:
के बराबर कुछ भी नहीं है। अब तक मिले सभी समाधान मुख्य गतिविधियां onPause()
विधि का उपयोग करने का प्रस्ताव देते हैं। हालांकि इसे किसी भी समय मुख्य Activity
रोका गया है, जो तब भी होता है जब ऐप के भीतर कोई अन्य Activity
प्रारंभ होता है। ActivityLifecycleCallbacks
इंटरफेस से onActivityPaused()
विधि के लिए यह सच है।
तो, यह पता लगाने के लिए कि ऐप (केवल Activity
नहीं) बंद है या पृष्ठभूमि को भेज दिया गया है?
दूसरी समस्या है, मुझे पृष्ठभूमि कार्य को चलाने के तरीके के बारे में कोई जानकारी नहीं मिली है। सभी समाधान बस AsyncTask
शुरू करने के लिए इंगित करते हैं, लेकिन क्या यह वास्तव में सही समाधान है?
AsyncTask
एक नया कार्य शुरू करेगा, लेकिन यह कार्य भी बंद हो जाएगा, जब ऐप बंद/निष्क्रिय हो? ऐप और कार्य को कुछ सेकंड के बाद निलंबित होने से रोकने के लिए मुझे क्या करना है? ऐप पूरी तरह से निलंबित होने से पहले, मैं कैसे सुनिश्चित कर सकता हूं कि कार्य पूरा हो सकता है?
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.widget.Toast;
public class SendDataService extends Service {
private final LocalBinder mBinder = new LocalBinder();
protected Handler handler;
protected Toast mToast;
public class LocalBinder extends Binder {
public SendDataService getService() {
return SendDataService .this;
}
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
// write your code to post content on server
}
});
return android.app.Service.START_STICKY;
}
}
मेरे कोड का अधिक विवरण है:
आप –
के लिए सेवाओं का उपयोग कर सकते हैं क्या आपने एक सेवा माना है? – apmartin1991
सेवा का उपयोग करें https://developer.android.com/reference/android/app/Service.html –