我正在尝试将事件从一个Java类发送到Activity。
场景是,将有一些数据在本机,本机将调用回调函数,这是在java代码,这个类处理数据,处理后我需要更新UI。我想在Activity处理程序的一个地方更新UI。(不想到处使用runOnUiThread())。
我无法使用以下方法正确发送事件。
方法1:
1)定义将消息发送到队列的函数,并调用这些函数。2)要调用上面提到的函数(第一点),我们需要上下文,如果我维护静态变量来维护上下文并返回它,如果活动被创建两次,我们将无法获得第一个活动的写上下文。
public class Activity1 {
protected static Context myContext = null;
protected Handler myHandler = null;
@override
public void onCreate() {
myContext = this;
myHandler = new Handler();
}
public static Context getMyContext() {
return myContext;
}
public void postEvent1() {
myHandler.sendMessage();
}
}
方法2:1)将处理程序作为静态变量,并在静态函数的帮助下返回它。暴露内部变量不是一个好的设计。
2)当创建第二个活动时,Cons将像上面一样。
public class Activity1 {
protected static Handler myHandler = null;
@override
public void onCreate() {
myHandler = new Handler();
}
public static Context getMyHandler() {
return myHandler;
}
}
是否可以在不使用静态变量和静态函数的情况下获得活动上下文?
请分享如果有人知道的知识。:)
谢谢,问候,
SSuman185
我使用一个容器类HashMap来存储带有键的上下文。
我使用类的名称作为键。
当第二个活动试图注册包含hashmap的类时,它将回复已经存储的活动的上下文(如果不是null)。
所以像这样,我能够存储类的上下文,避免丢失第一个活动上下文,如果我正在创建第二个。
请补充谁有更好的解决方案