motion-async 0.5 → 0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -0
- data/lib/motion-async/motion_async.rb +20 -0
- data/lib/motion-async/motion_async_task.rb +3 -0
- data/lib/motion-async/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ade482b04b4d78ff5cb6f32f6b896394d85953bb
|
4
|
+
data.tar.gz: 13c5d56323a038efd25441c4bdc841343904d4e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 026d229e293c450bf559d5722ee1b56d80afd5a14d04bb5d92238810c1e0b33d7e0d4355aafeab6161cca2d4f2ecc5aa22c9fc41f2e446cf74050d6a12b7da3c
|
7
|
+
data.tar.gz: af90929ef4b3b8047a0123b94333b9c7870789b58fd17956c51adc53352c3658c3a209d57d0593417ae6192fa7dfa3e57ce8d6c553f60966cb7907b1db111965
|
data/README.md
CHANGED
@@ -189,6 +189,18 @@ task.running?
|
|
189
189
|
task.finished?
|
190
190
|
```
|
191
191
|
|
192
|
+
### Delaying Execution
|
193
|
+
|
194
|
+
The `after` method works just like `async`, but takes a float as its first parameter to specify the number of seconds to delay before executing the async block:
|
195
|
+
|
196
|
+
```ruby
|
197
|
+
after(2) do
|
198
|
+
p "This won't happen for another 2 seconds"
|
199
|
+
end
|
200
|
+
```
|
201
|
+
|
202
|
+
This works fine for relatively short delays (a few seconds at most), but you'd probably want to use a [Handler](https://developer.android.com/reference/android/os/Handler.html) for anything longer.
|
203
|
+
|
192
204
|
## Development
|
193
205
|
|
194
206
|
### Tests
|
@@ -197,3 +209,6 @@ It's a little tricky to test background threads in a unit test context. I went t
|
|
197
209
|
|
198
210
|
So, we've got a few tests in `main_spec.rb` and then a bunch in `main_activity.rb` which are run simply by running the app in this codebase via `rake`. I'm not especially proud of this, but figured it was better than nothing. If anyone can show me a better way, I'd love to see it.
|
199
211
|
|
212
|
+
## Credits
|
213
|
+
|
214
|
+
Many, many thanks to [Todd Werth](https://github.com/twerth) and [Jamon Holmgren](https://github.com/jamonholmgren) for helping to define the API. This is a much better gem than it would have been without their input.
|
@@ -87,6 +87,18 @@
|
|
87
87
|
# @async_task.cancel
|
88
88
|
# end
|
89
89
|
#
|
90
|
+
# Delaying execution
|
91
|
+
#
|
92
|
+
# The #after method works just like #async, but takes a float as its first parameter to
|
93
|
+
# specify the number of seconds to delay before executing the async block.
|
94
|
+
#
|
95
|
+
# after(2) do
|
96
|
+
# p "We did this 2 seconds later"
|
97
|
+
# end
|
98
|
+
#
|
99
|
+
# This works fine for relatively short delays (a few seconds at most), but you'd probably want to use a
|
100
|
+
# Handler for anything longer.
|
101
|
+
#
|
90
102
|
module MotionAsync
|
91
103
|
|
92
104
|
def self.async(options={}, &block)
|
@@ -95,9 +107,17 @@ module MotionAsync
|
|
95
107
|
end
|
96
108
|
end
|
97
109
|
|
110
|
+
def self.after(delay, options={}, &block)
|
111
|
+
MotionAsync.async(options.merge(delay: delay), &block)
|
112
|
+
end
|
113
|
+
|
98
114
|
def async(options={}, &block)
|
99
115
|
MotionAsync.async(options, &block)
|
100
116
|
end
|
101
117
|
|
118
|
+
def after(delay, options={}, &block)
|
119
|
+
MotionAsync.after(delay, options, &block)
|
120
|
+
end
|
121
|
+
|
102
122
|
end
|
103
123
|
|
@@ -1,10 +1,12 @@
|
|
1
1
|
class MotionAsyncTask < Android::Os::AsyncTask
|
2
2
|
attr_reader :result
|
3
|
+
attr_accessor :delay
|
3
4
|
|
4
5
|
# Java is super picky about constructors, so we'll use a factory method
|
5
6
|
def self.create(options={}, &block)
|
6
7
|
MotionAsyncTask.new.tap do |task|
|
7
8
|
options[:background] = block if block
|
9
|
+
task.delay = options.delete(:delay)
|
8
10
|
task.callbacks.merge!(options)
|
9
11
|
end
|
10
12
|
end
|
@@ -52,6 +54,7 @@ class MotionAsyncTask < Android::Os::AsyncTask
|
|
52
54
|
end
|
53
55
|
|
54
56
|
def doInBackground(params)
|
57
|
+
sleep self.delay if self.delay
|
55
58
|
@result = call_if_defined :background, self
|
56
59
|
end
|
57
60
|
|
data/lib/motion-async/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: motion-async
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.6'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Darin Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bacon
|