2013-03-14 75 views
0

好日子,Android上,我的主要活動從另一個活動訪問的參考

我有我的主要活動與對象,

public Network netConnection = null; 

我隨後致電:

netConnection = new Network(new Network.OnMessageReceived() { 
      @Override 
      // here the messageReceived method is implemented 
      public void messageReceived(String message) { 
       // this method calls the onProgressUpdate 
       publishProgress(message); 
      } 
     }); 
     netConnection.run(); 

現在我創建一個新的活動,我運行它與此代碼:

case R.id.menu_packet: { 
     Intent intent = new Intent(this, PacketActivity.class); 
     String id = "" + hashCode(); 
     intent.putExtra("id", id); 
     startActivity(intent); 
     return true; 
    } 

我已經試圖做事with putExtra()在意圖等,但我沒有來對的。

有沒有簡單的方法來傳遞我的netConnection的PacketActivity引用?

我不想複製它或任何東西。只需能夠從PacketActivity訪問netConnection對象?

感謝

+0

您是否需要爲PacketActivity創建新活動?爲什麼不從PacketActivity類創建netConnection? – Davos555 2013-03-14 11:13:55

+0

通過這兩個活動的netwrokConnection進行通信。 MainActivity接收數據,另一個發送數據。 – Zapnologica 2013-03-14 11:26:32

回答

1

可以擴展Application,在您的擴展應用創建setter和getter方法,然後由新的活動調用它。

here教程
有用的鏈接:
Extending Application
Extending Application to share variables globally
Android extends Application basics

例如

public class myApplication extends Application{ 
    private myType myObj; 

    public void set_myObj(myType theThing){ 
     myObj = theThing; 
    } 
    public myType get_myObj(){ 
     return myObj; 
    }  
} 

然後從您的主要活動:

((myApplication)getApplication()).set_myObj(myObj); 

,並從第二個活動:

myType myObj = ((myApplication)getApplication()).get_myObj(); 

,並小心內存泄漏..!

+0

好吧,聽起來不錯,但是我怎樣才能從其他課上訪問它?我的兩個活動目前都是'擴展Activity'我可以將它們改爲'extends Application'嗎? – Zapnologica 2013-03-14 11:31:20

+0

應用程序只需擴展一次,對於整個應用程序,然後通過編輯答案 – lelloman 2013-03-14 11:44:41

+0

的方式從活動中訪問它,那麼MyApplication類與我的兩個活動類是分開的嗎?它就像一個第三方? – Zapnologica 2013-03-14 11:51:51

0

這聽起來像一個用例服務:

http://developer.android.com/reference/android/app/Service.html

的事情是,一旦從你創建的網絡對象被銷燬例如活動要啓動新的活動,那麼網絡對象也將被垃圾收集,所以我不認爲通過參考將有助於...

+0

如果您傳遞該對象的引用,GC不會銷燬它,afaik。 – lelloman 2013-03-14 11:20:00

+0

而且它也是它存儲在主要活動中,如果我沒有弄錯,除非關閉整個應用程序,否則這不會被破壞? – Zapnologica 2013-03-14 11:29:54

+0

是的,默認情況下它應該保留在活動堆棧中,所以根活動將保留引用,直到關閉應用程序 – lelloman 2013-03-14 11:36:37

相關問題