Don't show progress for every app being processed from index.xml.
Rather, only show 25 progress events. I went with "25 events" rather than "every X apps" because then it will be nice for both large repos (e.g. F-Droid will update every ~50 apps) and small repos (something with 20 apps will update for every one, but not add much overhead). On my testing with an API 11 emulator here, it went from ~32s to process ~1100 apps to ~20s. When no progress events are sent, then it also takes ~20s, so this essentially is a 50% improvement for this part of the update process.
This commit is contained in:
		
							parent
							
								
									481cd91646
								
							
						
					
					
						commit
						e4401ed22c
					
				@ -21,6 +21,8 @@
 | 
			
		||||
* Initial support for root and system installers, allowing the client to
 | 
			
		||||
  install apks directly on its own
 | 
			
		||||
 | 
			
		||||
* Increased performance when updating from repository with many apps
 | 
			
		||||
 | 
			
		||||
* Switch to Appcompat from the Support library
 | 
			
		||||
 | 
			
		||||
* Fix some crashes
 | 
			
		||||
 | 
			
		||||
@ -279,14 +279,15 @@ public class RepoXMLHandler extends DefaultHandler {
 | 
			
		||||
        } else if (localName.equals("application") && curapp == null) {
 | 
			
		||||
            curapp = new App();
 | 
			
		||||
            curapp.id = attributes.getValue("", "id");
 | 
			
		||||
            if (progressCounter % (totalAppCount / 25) == 0) {
 | 
			
		||||
                Bundle data = new Bundle(1);
 | 
			
		||||
                data.putString(RepoUpdater.PROGRESS_DATA_REPO_ADDRESS, repo.address);
 | 
			
		||||
                progressListener.onProgress(
 | 
			
		||||
                    new ProgressListener.Event(
 | 
			
		||||
                        RepoUpdater.PROGRESS_TYPE_PROCESS_XML,
 | 
			
		||||
                        progressCounter, totalAppCount, data));
 | 
			
		||||
            }
 | 
			
		||||
            progressCounter ++;
 | 
			
		||||
            Bundle data = new Bundle(1);
 | 
			
		||||
            data.putString(RepoUpdater.PROGRESS_DATA_REPO_ADDRESS, repo.address);
 | 
			
		||||
            progressListener.onProgress(
 | 
			
		||||
                new ProgressListener.Event(
 | 
			
		||||
                    RepoUpdater.PROGRESS_TYPE_PROCESS_XML,
 | 
			
		||||
                    progressCounter, totalAppCount, data));
 | 
			
		||||
 | 
			
		||||
        } else if (localName.equals("package") && curapp != null && curapk == null) {
 | 
			
		||||
            curapk = new Apk();
 | 
			
		||||
            curapk.id = curapp.id;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user