在我的应用程序中,我有一个线程和一个相应的处理程序来更新 UI。这个线程将从我的主要活动开始,线程接受几个参数,包括一个上下文。这种上下文是这样使用的:
Context c;
MessageHandler handler;
public BluetoothCommunicator(Context c) {
this.c = c;
handler = new MessageHandler(c);
}
在我的run()
方法中,当发生特殊事件时,我将一些数据发布到此处理程序。在我的handleMessage()
方法中,我创建了一些 ProgressDialogs,以便通知用户正在进行操作。
@Override
public void handleMessage(Message m) {
String message = (String) m.obj;
//Getting files
if (message.equals("0")) {
folder.appendToLogFile(new Date().toString(), "Incoming File From: " + deviceName);
pd = new ProgressDialog(c);
pd.setTitle("Please Wait..");
pd.setMessage("Retrieving file from " + deviceName);
pd.setCancelable(false);
pd.show();
}
据我了解,我无法使用 . 创建 ProgressDialog getApplicationContext()
,但我需要Activity Context
.
根据 MAT,我的编码方式会导致我的应用程序出现内存泄漏
我看到这个跟踪的方式是c
对应于c
我在构造函数中初始化的对象。这是正确的吗?
我该如何解决这个问题?没有 AsyncTask 不相关,因为问题出在Context
.