我想從我的MyApp(擴展應用程序)中從廣播接收器(在清單中註冊)訪問「全局」變量,例如多種活動。現在我似乎有不同的MyApp實例:一個用於BCR,另一個用於活動。可以幫我解決我的問題嗎? 非常感謝 JoergBroadcastConceiver中的應用上下文的不同實例
8
A
回答
1
我從這裏得到的是,你正在嘗試創建一個方法,讓單個上下文對象。首先,要做到這一點,您需要一個MyApp的單例模式來創建您的「全局」變量。然而,我會建議反對這個原因如下:
- 不同的應用程序組件默認情況下有不同的上下文(基地,應用程序)。
- 清單中定義的BroadcastReceiver由操作系統調用,而不是由您的應用程序調用。
- 對一個上下文對象使用單例模式會導致一些非常討厭的依賴。
- 你正在反對Android框架的設計和美感。
我會懷疑你這樣做的原因是你的MyApp類可以啓動不同的活動。這是有道理的,但是......你幾乎可以從任何地方獲得上下文對象。 Android中的很多東西都擴展了ContextWrapper類(用Object類來思考Java對象)。所以真的沒有理由有這個「全局」實例。事實上,您的BroadcastReceiver的onReceive()方法接受一個上下文參數。你可以使用這個來開始活動,而不是。
如果這不是你想要MyApp單例類的原因 - 並且有合理理由需要它,我會考慮implementation designed by Bill Pugh,因爲考慮到線程同步和鎖定,它是Java中最安全的。
希望這會有所幫助。請記住,不要對抗SDK,讓它爲你工作!
0
我有一個類似的問題,我能夠使用這種模式的活動訪問對象:
public class MyReceiver extends android.content.BroadcastReceiver {
private Object _object;
public MyReceiver(Someobject) {
_object = the object;
}
@Override
public void onReceive(Context context, Intent intent) {
Do something to the object.
}
}
然後調用MyReceiver(theobject)
而不是new BroadcastReceiver()
。
相關問題
- 1. WCF中的上下文和實例
- 2. 數據實例中的上下文
- 3. 在SQLiteOpenHelper的不同實例中使用SQLiteDatabase的相同實例
- 4. Spring Security - 在應用程序上下文中找不到可見的WebSecurityExpressionHandler實例
- 5. 如何使用StructureMap爲ASP.NET MVC中的不同上下文注入不同的實例?
- 6. 在業務邏輯中訪問應用程序上下文的實例時發生NullPointerException。如何訪問應用程序上下文的實例?
- 7. 決定活動上下文或應用程序上下文實例化SQLiteOpenHelper
- 8. Promise中的此上下文並不涉及內部實例
- 9. 在不同的上下文中保存獲取的實體
- 10. 在不同的包中獲取應用程序上下文
- 11. 從不同的上下文中運行C#應用程序
- 12. 在不同的實例上共享SerialPort
- 13. Windows上的不同Tomcat實例
- 14. 多線程Java應用程序中的java.net.HttpURLConnection的不同實例
- 15. 在不同的實例中在FinCal中應用NPV函數
- 16. 在不同的上下文中的JavaScript'this'
- 17. 不同的上下文
- 18. 來自ConstraintValidator的上下文不會返回ExecutionContextInterface的實例
- 19. 如何在同一頁面上用不同的配置文件實現CKEDITOR的不同實例?
- 20. 如何將遷移應用到實例化的EF 7上下文中?
- 21. DDD爲不同的上下文邊界保存「相同」實體
- 22. 彈簧3個MVC多個應用程序上下文實例
- 23. 實體在不同Linq-to-SQL上下文中的相等性
- 24. 基於簡單注射器中的上下文注入相同的實例
- 25. AJAX調用不同的應用程序上下文(Java + Tomcat)
- 26. 如何爲同一實例上的不同用戶授予不同的權限
- 27. PHP error_log中的不同結果,並在不同的上下文呼應
- 28. 在不同的上下文中避免同一方法的多個實現
- 29. 創建一個對象的實例並在不同的類文件中使用相同的實例
- 30. TypeScript從靜態上下文中的類創建新的實例
你是如何聲明你的「全局」變量的? – 2010-12-21 00:30:41
當然,它是我的MyApp類的成員。我自己找到了一個解決方案,但我仍然有一個問題: (在清單中)工作正常, 之前我有 android:process =」:remote「做什麼? –
2010-12-21 10:20:36
我有同樣的問題。你是如何解決這個問題的? – Vincent 2011-05-03 15:28:40