1. 06 Aug, 2016 6 commits
  2. 05 Aug, 2016 3 commits
  3. 22 Jul, 2016 1 commit
  4. 19 Jul, 2016 4 commits
  5. 18 Jul, 2016 5 commits
  6. 16 Jul, 2016 3 commits
  7. 15 Jul, 2016 1 commit
  8. 14 Jul, 2016 1 commit
  9. 13 Jul, 2016 4 commits
  10. 12 Jul, 2016 7 commits
  11. 11 Jul, 2016 5 commits
    • Mygod's avatar
      Use official icons · 16f45728
      Mygod authored
      16f45728
    • Mygod's avatar
      Bugfix for DropDownPreference · 44625ae5
      Mygod authored
      44625ae5
    • Mygod's avatar
      Bugfix for NAT mode · 159e1dff
      Mygod authored
      159e1dff
    • Mygod's avatar
      Refine #530 again · 84ac2b06
      Mygod authored
      Have. To. Do. More. Refinements.
      
      Here's what happened in the buggy versions: (I think)
      
      * `BootReceiver` starts which invokes `Utils.startSsService` which starts `ShadowsocksRunnerService`;
      * `ShadowsocksRunnerService` binds to `BaseService`;
      * 1s after it's connected, it invokes `bgService.use` which returns immediately after pushing `use` in the queue since it's an oneway method;
      * Then `stopSelf` => `detachService`, `BaseService` now have nothing bound to it and not started either (neither foreground nor background), so the system can destroy it any time; (at this point, `BaseService.use` isn't invoked yet)
      * `com.github.shadowsocks` process then probably exits since booting is a resource-heavy task, anyway it doesn't matter;
      * Some time later `com.github.shadowsocks:bg` resumes running, and `BaseService` is stopped and destroyed. Now the system is no longer aware of this `BaseService` instance but it isn't garbage collected yet;
      * `use` is finally invoked;
      * `startService` is invoked in `startRunner` and the destroyed background service starts running; (bug of Android?)
      * `startForeground` is invoked in `ShadowsocksNotification` but the system probably refused it since the service itself is already destroyed;
      * When the main activity UI is brought up and requests binding, `com.github.shadowsocks:bg` which is unaware of the existing instance of `BaseService` creates another `BaseService` and thus everything gets messed up.
      
      This commit fixes this by invoking `getState` (which isn't an oneway method) immediately after `use` so that `ShadowsocksRunnerService` will wait for `BaseService` to start itself before destroying itself and its connection to `BaseService`. And thus its return value is not used.
      84ac2b06
    • Mygod's avatar
      Bugfix for NumberPickerPreference · dcf190c1
      Mygod authored
      dcf190c1