所以我正在线程化一个活动,因为我想放入一个加载屏幕
当它放在加载屏幕上时,应用程序首先检查用户是否已登录以及是否加载了错误屏幕。
在线程的最后我只有
handler.sendEmptyMessage(0);
对于处理程序我有
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
dataAdapter.notifyDataSetChanged();
pd.dismiss();
if (badkey==1)
{
reloginDlog().show();
}
}
};
pd是一个进度对话框,badkey是一个公共int。
我在私人处理程序行中收到一条警告:“此Handler类应该是静态的,否则可能会发生泄漏(MyActivity.1)”
所以有人知道为什么这是坏的以及我如何解决它?
答案 0 :(得分:0)
尝试相似:(线程与处理程序相关联应该有初始化的消息循环 - Looper.prepare()
和.loop()
):
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
handler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
//...
//destroy message cue when no longer needed
if(noMoreMessagesToHandle) {
Looper.myLooper().quit();
}
}
};
Looper.loop();
}
}).start();