private void backupScreens(BackupDataOutput data) throws IOException {
  ContentResolver cr=mContext.getContentResolver();
  Cursor cursor=cr.query(LauncherSettings.WorkspaceScreens.CONTENT_URI,SCREEN_PROJECTION,null,null,null);
  try {
    cursor.moveToPosition(-1);
    if (DEBUG)     Log.d(TAG,"dumping screens after: " + mLastBackupRestoreTime);
    while (cursor.moveToNext()) {
      final long id=cursor.getLong(ID_INDEX);
      final long updateTime=cursor.getLong(ID_MODIFIED);
      BackupProtos.Key key=getKey(BackupProtos.Key.SCREEN,id);
      mKeys.add(key);
      final String backupKey=keyToBackupKey(key);
      if (!mExistingKeys.contains(backupKey) || updateTime >= mLastBackupRestoreTime) {
        writeRowToBackup(key,packScreen(cursor),data);
      }
 else {
        if (VERBOSE)         Log.v(TAG,"screen already backup up " + id);
      }
    }
  }
  finally {
    cursor.close();
  }
}

private void backupScreens ( BackupDataOutput data ) throws IOException { ContentResolver cr = mContext . getContentResolver ( ) ; Cursor cursor = cr . query ( LauncherSettings . WorkspaceScreens . CONTENT_URI , SCREEN_PROJECTION , null , null , null ) ; try { cursor . moveToPosition ( - 1 ) ; if ( DEBUG ) Log . d ( TAG , "dumping screens after: " + mLastBackupRestoreTime ) ; while ( cursor . moveToNext ( ) ) { final long id = cursor . getLong ( ID_INDEX ) ; final long updateTime = cursor . getLong ( ID_MODIFIED ) ; BackupProtos . Key key = getKey ( BackupProtos . Key . SCREEN , id ) ; mKeys . add ( key ) ; final String backupKey = keyToBackupKey ( key ) ; if ( ! mExistingKeys . contains ( backupKey ) || updateTime >= mLastBackupRestoreTime ) { writeRowToBackup ( key , packScreen ( cursor ) , data ) ; } else { if ( VERBOSE ) Log . v ( TAG , "screen already backup up " + id ) ; } } } finally { cursor . close ( ) ; } }
write all modified screens to the data stream .
