2014-09-29 1 views
0

Im пытается создать поток в RubyMotion для Android (бета).Как создать нить в RubyMotion для Android

Я попытался следующий код:

class MyRun 
    def run 
    end 
end 

r = MyRun.new 
t = Thread.new(r) 
t.start 

Я получаю ошибку является:

java.lang.NoSuchMethodError: no method with name='< init>' signature='(Ljava/lang/Runnable;)V' in class Lcom/rubymotion/Thread;

Он автоматически находить правильную подпись (Runnable), но я не уверен, почему его путают ,

http://developer.android.com/reference/java/lang/Thread.html

http://www.rubymotion.com/developer-center/api/Thread.html

http://www.ruby-doc.org/core-2.1.3/Thread.html

+0

Вы могли решить это? Я застрял в чем-то подобном с rubymotion на android – acrogenesis

ответ

0

Это должно работать:

t = Thread.new do 
    r.run 
end 
# Don't need to explicitly start, the thread will start automatically by the thread scheduler. 
# t.start 

Руби Thread.new нужен блок. Любые аргументы, переданные .new будет получить передается в блок:

Thread.new('some value') do |arg1| 
    arg1 # => "some value" 
end 

Документах вы связаны с API Java являются не Руби.

+0

Я использую RubyMotion, см .: http://www.rubymotion.com/developer-center/api/Thread.html. После использования вашего ответа я все еще получаю сообщение об ошибке: java .lang.NoSuchMethodError: no method with name = '' signature = '() V' в классе Lcom/rubymotion/Thread; –

+0

@ diego.greyrobot, что мы должны использовать? 1) Ruby threads или 2) AsyncTask? ---> https://developer.android.com/reference/android/os/AsyncTask.html – AbhimanyuAryan

+0

В какой AsyncTask lib вы ссылаетесь? – DiegoSalazar