我有這樣的問題: 我有一個活動和二級MyGLSurfaceView,MyGLRenderer從活動將數據發送到一個類中的Android
在活動存在產生不同數量的線程,我要送這變量MyGLRenderer。
我不能通過構造函數的參數傳遞這個變量:/ 這是一種不同的模式來從一個活動發送變量到一個類?我能怎麼做 ?
我有這樣的問題: 我有一個活動和二級MyGLSurfaceView,MyGLRenderer從活動將數據發送到一個類中的Android
在活動存在產生不同數量的線程,我要送這變量MyGLRenderer。
我不能通過構造函數的參數傳遞這個變量:/ 這是一種不同的模式來從一個活動發送變量到一個類?我能怎麼做 ?
也許這不是很清楚的解決方案,但你可以考慮使用EventBus
https://github.com/greenrobot/EventBus哪些腳限制某些特定於android的情況。
註冊EventBus
在你類的構造函數一樣
EventBus.getDefault.register(this);
在您的活動
onCreate()
和
onDestroy()
方法
和register()
/unRegister()
。
當你只需要從activity
崗位價值像
EventBus.getDefault().post(new WhateverObject());
而在其他類
public void onEvent(WhateverObject object){
//doing stuff
}
謝謝:) 你的解決方案和聲明公共變量有相同的性能嗎? – aeroxr1 2014-09-19 20:44:16
當然,它並不是那麼快(我們在生產中使用它,支持minSdk 7很好),它可以很好地解耦活動和類,消除冗餘接口。 – 2014-09-19 20:58:28
你可以改變構造以匹配您發送
例如說法:如果你想通過串
MyGLRenderer(String s)
{
// store it to local variable and use it
}
或
,你可以在MyGLRenderer
類中聲明公共變量和從你的Actvity
感謝大家:) 我選擇了公共變量的解決方案,因爲我認爲這對我來說更容易:) – aeroxr1 2014-09-21 09:14:29
獲得價值創建'MyGLRenderer'的方法,使活動送價值。 – 2014-09-19 20:14:21
問題是在Activity中沒有MyGLRenderer對象,但只有一個MyGLRenderer變量。因此,唯一的模式是在MyGLSurfaceView中實現一個函數,它調用MyGLRenderer的函數?沒有其他辦法? 也許我可以做: myglviewobject.myrendererobject.variable? – aeroxr1 2014-09-19 20:25:01
「MyGLRenderer對象,但只有一個MyGLRenderer變量」......嗯......聽起來你需要閱讀一個參考變量是什麼。或者這是你評論中的錯字? – 2014-09-19 20:33:05