示例#1
0
    @Override
    protected Void doInBackground(Void... params) {
      try {
        final LocalRepoManager lrm = LocalRepoManager.get(SwapActivity.this);
        publishProgress(getString(R.string.deleting_repo));
        lrm.deleteRepo();
        for (String app : selectedApps) {
          publishProgress(String.format(getString(R.string.adding_apks_format), app));
          lrm.addApp(SwapActivity.this, app);
        }
        lrm.writeIndexPage(sharingUri.toString());
        publishProgress(getString(R.string.writing_index_jar));
        lrm.writeIndexJar();
        publishProgress(getString(R.string.linking_apks));
        lrm.copyApksToRepo();
        publishProgress(getString(R.string.copying_icons));
        // run the icon copy without progress, its not a blocker
        new AsyncTask<Void, Void, Void>() {

          @Override
          protected Void doInBackground(Void... params) {
            lrm.copyIconsToRepo();
            return null;
          }
        }.execute();
      } catch (Exception e) {
        Log.e(TAG, "An error occured while setting up the local repo", e);
      }
      return null;
    }
  @Override
  public void onResume() {
    super.onResume();
    resetNetworkInfo();
    setRepoSwitchChecked(FDroidApp.isLocalRepoServiceRunnig());

    LocalBroadcastManager.getInstance(this)
        .registerReceiver(onWifiChange, new IntentFilter(WifiStateChangeService.BROADCAST));
    LocalBroadcastManager.getInstance(this)
        .registerReceiver(onLocalRepoChange, new IntentFilter(LocalRepoService.STATE));
    // if no local repo exists, create one with only FDroid in it
    if (!LocalRepoManager.get(this).xmlIndex.exists())
      new UpdateAsyncTask(
              this,
              new String[] {
                getPackageName(),
              })
          .execute();

    // start repo by default
    FDroidApp.startLocalRepoService(LocalRepoActivity.this);
    // reset the timer if viewing this Activity again
    if (stopTimer != null) stopTimer.cancel();
    // automatically turn off after 15 minutes
    stopTimer = new Timer();
    stopTimer.schedule(
        new TimerTask() {

          @Override
          public void run() {
            FDroidApp.stopLocalRepoService(LocalRepoActivity.this);
          }
        },
        900000); // 15 minutes
  }