Это относительно простой метод. У меня это сработало: вам нужно добавить тег <receiver>
в файл манифеста следующим образом:
<application>
<receiver
android:name= "com.example.checkDownloadComplete" <!-- add desired full name here -->
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
</intent-filter>
</receiver>
</application>
Это зарегистрирует широковещательный приемник для события, на котором ваша загрузка завершена. Это вызовет метод onReceive()
в вашем классе, как только загрузка завершится. Помните, что вам нужно extend
класс BroadcastReceiver, но не implement
его. Я объявил логическую переменную в качестве переключателя для проверки завершения загрузки. Следовательно, ваш класс Java будет выглядеть примерно так:
public static class checkDownloadComplete extends BroadcastReceiver{
public static boolean isDownloadComplete= false;
@Override
public void onReceive(Context context, Intent intent) {
isDownloadComplete = true;
Log.i("Download completed?", String.valueOf(isDownloadComplete));
}
}
Чтобы дождаться или проверить, завершилась ли ваша загрузка из любого другого класса, используйте следующий простой код в нужном подходящем месте:
while(!checkDownloadComplete.isDownloadComplete){
// add necessary code to be executed before completion of download
}
//code after completion of download
Но помните, что если вам нужно проверить это несколько раз в вашем проекте, вам нужно будет заранее сбросить значение isDownloadComplete
.
person
huskygrad
schedule
16.11.2015