远程Actor在Android上不起作用 - >堆栈溢出

时间:2011-04-15 06:37:14

标签: android scala actor

我目前正在测试Android上的远程演员。我做了一个包含两个类的小程序:第一个实现主要活动,第二个实现一个actor。

当我创建我的actor时,该程序被这条消息杀死:在调用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() 
                        } 
                } 
        } 
}

anyboy是否知道这个错误或任何想法的解决方案或有在Android上运行远程actor的经验?

感谢

2 个答案:

答案 0 :(得分:3)

我发现了问题!我查看了远程actor的来源,“TcpService”中的函数“generatePort”包含一个递归调用,找到一个空闲的套接字端口。 Android没有提供端口,因为... AndroidManifest.xml必须包含使用套接字的INTERNET权限。

我希望这个主题可以帮助某人

答案 1 :(得分:1)

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