Filtering bools are now done once per refresh
This commit is contained in:
		
							parent
							
								
									3ea503f527
								
							
						
					
					
						commit
						40f4482bd6
					
				@ -53,12 +53,10 @@ public class DB {
 | 
			
		||||
 | 
			
		||||
    private static Semaphore dbSync = new Semaphore(1, true);
 | 
			
		||||
    static DB dbInstance = null;
 | 
			
		||||
    private static Context activityContext = null;
 | 
			
		||||
 | 
			
		||||
    // Initialise the database. Called once when the application starts up.
 | 
			
		||||
    static void initDB(Context ctx) {
 | 
			
		||||
        dbInstance = new DB(ctx);
 | 
			
		||||
        activityContext = ctx;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Get access to the database. Must be called before any database activity,
 | 
			
		||||
@ -758,7 +756,6 @@ public class DB {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Map<String, App> apps = new HashMap<String, App>();
 | 
			
		||||
        AppFilter appFilter = new AppFilter(activityContext);
 | 
			
		||||
        Cursor c = null;
 | 
			
		||||
        long startTime = System.currentTimeMillis();
 | 
			
		||||
        try {
 | 
			
		||||
@ -791,7 +788,6 @@ public class DB {
 | 
			
		||||
                        .parse(sLastUpdated);
 | 
			
		||||
                app.compatible = c.getInt(12) == 1;
 | 
			
		||||
                app.ignoreUpdates = c.getInt(13) == 1;
 | 
			
		||||
                app.filtered = appFilter.filter(app);
 | 
			
		||||
                app.hasUpdates = false;
 | 
			
		||||
 | 
			
		||||
                if (getinstalledinfo && systemApks.containsKey(app.id)) {
 | 
			
		||||
 | 
			
		||||
@ -236,6 +236,7 @@ public class FDroid extends FragmentActivity {
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
        case REQUEST_PREFS:
 | 
			
		||||
            ((FDroidApp) getApplication()).filterApps();
 | 
			
		||||
            // The automatic update settings may have changed, so reschedule (or
 | 
			
		||||
            // unschedule) the service accordingly. It's cheap, so no need to
 | 
			
		||||
            // check if the particular setting has actually been changed.
 | 
			
		||||
 | 
			
		||||
@ -66,12 +66,14 @@ public class FDroidApp extends Application {
 | 
			
		||||
 | 
			
		||||
        apps = null;
 | 
			
		||||
        invalidApps = new ArrayList<String>();
 | 
			
		||||
        Context ctx = getApplicationContext();
 | 
			
		||||
        ctx = getApplicationContext();
 | 
			
		||||
        DB.initDB(ctx);
 | 
			
		||||
        UpdateService.schedule(ctx);
 | 
			
		||||
    
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Context ctx;
 | 
			
		||||
 | 
			
		||||
    // Global list of all known applications.
 | 
			
		||||
    private List<DB.App> apps;
 | 
			
		||||
 | 
			
		||||
@ -137,7 +139,15 @@ public class FDroidApp extends Application {
 | 
			
		||||
        }
 | 
			
		||||
        if (apps == null)
 | 
			
		||||
            return new ArrayList<DB.App>();
 | 
			
		||||
        filterApps();
 | 
			
		||||
        return apps;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void filterApps() {
 | 
			
		||||
        AppFilter appFilter = new AppFilter(ctx);
 | 
			
		||||
        for (DB.App app : apps) {
 | 
			
		||||
            app.filtered = appFilter.filter(app);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user