эта служба обновления будет тянуть/Загрузить данные из хорошо осведомленного
Скачать с службы
большим вопросом здесь: как мне обновить мою деятельность от службы ?. В следующем примере мы собираемся использовать два класса, о которых вы, возможно, не знаете: ResultReceiver и IntentService. ResultReceiver - это тот, который позволит нам обновить наш поток из службы; IntentService - это подкласс Сервиса, который генерирует поток для выполнения фоновой работы (вы должны знать, что Служба работает на самом деле в том же потоке вашего приложения, когда вы расширяете Сервис, вы должны вручную создавать новые потоки для выполнения операций блокировки ЦП) ,
Скачать Сервис может выглядеть следующим образом:
public class DownloadService extends IntentService {
public static final int UPDATE_PROGRESS = 8344;
public DownloadService() {
super("DownloadService");
}
@Override
protected void onHandleIntent(Intent intent) {
String urlToDownload = intent.getStringExtra("url");
ResultReceiver receiver = (ResultReceiver) intent.getParcelableExtra("receiver");
try {
URL url = new URL(urlToDownload);
URLConnection connection = url.openConnection();
connection.connect();
// this will be useful so that you can show a typical 0-100% progress bar
int fileLength = connection.getContentLength();
// download the file
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream("/sdcard/BarcodeScanner-debug.apk");
byte data[] = new byte[1024];
long total = 0;
int count;
while ((count = input.read(data)) != -1) {
total += count;
// publishing the progress....
Bundle resultData = new Bundle();
resultData.putInt("progress" ,(int) (total * 100/fileLength));
receiver.send(UPDATE_PROGRESS, resultData);
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (IOException e) {
e.printStackTrace();
}
Bundle resultData = new Bundle();
resultData.putInt("progress" ,100);
receiver.send(UPDATE_PROGRESS, resultData);
}
}
Добавить услугу в манифесте:
<service android:name=".DownloadService"/>
она должна обновить GUI, если есть новые обновления
Действие будет выглядеть так:
// инициализировать прогресс диалоговое как в первом примере
// это как огонь загрузчик
mProgressDialog.show();
Intent intent = new Intent(this, DownloadService.class);
intent.putExtra("url", "url of the file to download");
intent.putExtra("receiver", new DownloadReceiver(new Handler()));
startService(intent);
Здесь есть были ResultReceiver приходит играть:
private class DownloadReceiver extends ResultReceiver{
public DownloadReceiver(Handler handler) {
super(handler);
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
super.onReceiveResult(resultCode, resultData);
if (resultCode == DownloadService.UPDATE_PROGRESS) {
int progress = resultData.getInt("progress");
mProgressDialog.setProgress(progress);
if (progress == 100) {
mProgressDialog.dismiss();
}
}
}
}
для будущего добавить ссылку на тему не скопированный код из существующей темы. – Sajmon
Thnx !! будет иметь в виду –
thanx дорогой, но он отходит от того, что я ищу, служба, в которой я нуждаюсь, основана на времени, чтобы вытащить данные каждые x минут. но большое спасибо за помощь. – Nullity