如何在Handler中使用ApplicationContext



我真的是新的Android和我试图使用线程类与消息处理程序,在那里我需要使用ApplicationContext,但当我试图运行它崩溃,这里是代码,使应用程序崩溃

if (!connected.isState()) {
client = new MqttAndroidClient(myContext.context, SERVERURI, CLIENTID);
try {
IMqttToken token = client.connect();
token.setActionCallback(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
//we are connected
connected.setState(true);
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
//we are not connected
}
});
} catch (Exception e) {
e.printStackTrace();
}
return;    
}
这里是myContext类
class myContext extends Application {
public static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}

}我能做些什么来解决这个问题?

你可能没有告诉Android使用你的自定义Application类,所以myContext.onCreate()没有被调用。要做到这一点,您需要将此添加到您的清单中的<application>声明:

android:name=".myContext"

这里。最后,我通过发送一个包含applicationContext的消息来解决这个问题。Obj,下面是代码

if (!connected.isState()) {
client = new MqttAndroidClient((Context) msg.obj, SERVERURI, CLIENTID);
try {
IMqttToken token = client.connect();
token.setActionCallback(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
//we are connected
connected.setState(true);
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
//we are not connected
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
return;
}

感谢大家给我的建议,帮助我弥补我的不足。

: -)

相关内容

  • 没有找到相关文章

最新更新