удаленный актер не работает на Android -> переполнение стека - PullRequest
2 голосов
/ 15 апреля 2011

В настоящее время я тестирую удаленных актеров на Android. Я сделал небольшую программу с двумя классами: первый реализует основное действие, а второй реализует актер.

Когда я создаю своего актера, программа уничтожается с таким сообщением: переполнение стека при вызове Ljava / lang / throwable ... по какой-то причине стек программы кажется слишком маленьким (или есть какая-то ошибка) во время выполнения строки 3 моего второго класса (как показано ниже).

Это код моего второго класса:

class Person(ip : String, port : Int) extends Actor{ 
        val node = Node(ip, port) 
        var server  = select(node, 'myName)    // <'----- program crashes here 
        def act(){ 
                while(true){ 
                        receive { 
                                case Post(msg) => //do something 
                                case Stop => exit() 
                        } 
                } 
        } 
}

Кто-нибудь знает решение этой ошибки или любую идею или опыт работы с удаленными актерами на Android?

спасибо

Ответы [ 2 ]

3 голосов
/ 21 апреля 2011

Я нашел проблему! Я посмотрел источник удаленных актеров, и функция «generatePort» в «TcpService» содержит рекурсивный вызов для поиска свободного порта сокета. Android не дал порт, потому что ... AndroidManifest.xml должен содержать разрешение ИНТЕРНЕТ на использование сокета.

Надеюсь, эта тема кому-нибудь поможет

1 голос
/ 15 апреля 2011

Были некоторые проблемы с ограничениями стека Androids. Например, известна диспетчерская библиотека json (http://dispatch.databinder.net/Lift-JSON) взорвала стек из-за использования комбинаторов синтаксического анализа.

Взгляните на этот пост http://groups.google.com/group/android-developers/browse_thread/thread/d880c3d5777127d9. Второй пост описывает, как вы можете создать поток с большим стеком через этот конструктор: http://developer.android.com/reference/java/lang/Thread.html#Thread%28java.lang.ThreadGroup,%20java.lang.Runnable,%20java.lang.String,%20long%29

...