/ / यदि ऐप सेवा के साथ नष्ट हो जाता है तो मैं डाउनलोड फ़ाइल को कैसे डाउनलोड (डाउनलोड) रख सकता हूं? - Android, सेवा, Android- सेवा

यदि ऐप सेवा के साथ नष्ट हो जाता है तो मैं डाउनलोड फ़ाइल को कैसे डाउनलोड (डाउनलोड) रख सकता हूं? - Android, सेवा, Android- सेवा

यदि ऐप सेवा के साथ नष्ट हो जाता है तो मैं डाउनलोड फ़ाइल को कैसे डाउनलोड (डाउनलोड) रख सकता हूं? मैं इस का उपयोग कर वीडियो डाउनलोड कर रहा हूँ संपर्क और पृष्ठभूमि में डाउनलोड फ़ाइल लेकिन समस्या अनुप्रयोग को नष्ट डाउनलोड रद्द कर दिया है

अब मैं जानना चाहता हूं कि अगर ऐप नष्ट हो जाए तो मैं डाउनलोड फाइल कैसे चला सकता हूं

सेवा कोड

public class DownloadService extends Service {
private ThinDownloadManager downloadManager;
private static final int DOWNLOAD_THREAD_POOL_SIZE = 4;
RetryPolicy retryPolicy;


public List<Integer> downloadIds;


@Override
public void onCreate() {
super.onCreate();
downloadManager = new ThinDownloadManager(DOWNLOAD_THREAD_POOL_SIZE);
retryPolicy = new DefaultRetryPolicy(5000, 3, 2f);
downloadIds = new ArrayList<>();


}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

if (intent != null) {
Uri downloadUri = Uri.parse(intent.getStringExtra("url"));
Uri filepath = Uri.parse(intent.getStringExtra("filepath"));
Log.e("url", downloadUri.toString());
Log.e("filepath", filepath.toString());
startDownload(downloadUri, filepath);
} else {
Toast.makeText(this, "intent is null", Toast.LENGTH_SHORT).show();
}

return START_STICKY;


}

@Nullable
@Override
public IBinder onBind(Intent intent) {

return null;
}


public void startDownload(final Uri downloadUri, final Uri destinationUri) {
try {
int downloadId1 = (int) System.currentTimeMillis();

final DownloadRequest downloadRequest = new DownloadRequest(downloadUri)
.setRetryPolicy(retryPolicy)
.setDestinationURI(destinationUri).setPriority(DownloadRequest.Priority.HIGH)
.setDownloadContext("Download")
.setStatusListener(new DownloadStatusListenerV1() {
@Override
public void onDownloadComplete(DownloadRequest downloadRequest) {

if (downloadIds != null && downloadIds.size() > 0) {
Log.e("complete", downloadRequest.toString());
Log.e("path", destinationUri + "");
}
}

@Override
public void onDownloadFailed(DownloadRequest downloadRequest, int errorCode, String errorMessage) {

if (downloadIds != null && downloadIds.size() > 0) {
Log.e("fail", downloadRequest.toString() + "  " + errorMessage);
}
}

@Override
public void onProgress(DownloadRequest downloadRequest, long totalBytes, long downloadedBytes, int progress) {

if (downloadIds != null && downloadIds.size() > 0) {
Log.e("progress", progress + " ");
}
}
});

if (downloadManager.query(downloadId1) == DownloadManager.STATUS_NOT_FOUND) {
downloadId1 = downloadManager.add(downloadRequest);
downloadIds.add(downloadId1);

}


} catch (Exception e) {
Log.e("catch", e.toString());
}
}

}

गतिविधि वर्ग

 Intent intent = new Intent(VideolIst.this, DownloadService.class);
intent.putExtra("url", downloadUri.toString());
intent.putExtra("filepath", destinationUri.toString());
this.startService(intent);

के रूप में भी परिभाषित किया गया है <service android:enabled="true" android:name="DownloadService" >

उत्तर:

जवाब के लिए 0 № 1

लौटकर प्रयास करें START_REDELIVER_INTENT, इसलिए सेवा को एक पुनरारंभ के लिए निर्धारित किया जाएगा और अंतिम वितरित इरादे को ऑनस्टार्टकमांड के माध्यम से फिर से वितरित किया जाएगा।

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

if (intent != null) {
Uri downloadUri = Uri.parse(intent.getStringExtra("url"));
Uri filepath = Uri.parse(intent.getStringExtra("filepath"));
Log.e("url", downloadUri.toString());
Log.e("filepath", filepath.toString());
startDownload(downloadUri, filepath);
} else {
Toast.makeText(this, "intent is null", Toast.LENGTH_SHORT).show();
}

return START_REDELIVER_INTENT; // change this
}

अधिक सेवा वापसी प्रकारों के बारे में पढ़ें: https://developer.android.com/reference/android/app/Service.html


जवाब के लिए 0 № 2

नीचे दिए गए लिंक के लिए देखें प्रक्रिया तथा गुण AndroidManifest.xml में सेवा के लिए

https://developer.android.com/guide/topics/manifest/service-element.html

प्रकट फ़ाइल में:

<service
android:name="com.xyz.XyzService"
android:enabled="true"
android:exported="true"
android:process=":remote">
</service>

के साथ अपनी सेवा को परिभाषित करने के लिए Android: process = ": रिमोट" । आप मूल रूप से एक अलग प्रक्रिया (= वीएम) में अपनी सेवा चलाते हैं।

आशा है कि यह यू की मदद करेगा!