我对此感到困惑。我正在使用this Coursera course,并且在Assignment 5上工作。我能够以最小的困难完成任务,然后尝试使代码达到我自己的目的。我对它做了一些调整,但是我遇到了一个重大问题,我不能在我的生活中弄清楚。处理程序似乎没有消息......任何想法我做错了什么?Android Handler不处理消息
这是我的一些代码。让我知道是否有其他你想看的东西。
处理程序:
public class DownloadHandler extends Handler {
private WeakReference<Context> mContext;
public DownloadHandler(Context context) {
super();
mContext = new WeakReference<Context>(context);
Log.v(TAG,"Created! "+this);
}
// Handle any messages that get sent to this Handler
@Override
public void handleMessage(Message msg) {
Log.v(TAG, "" + msg); //Never reached
...
}
}
我往前走了,我已经通过发送一个简单的消息(handler.sendEmptyMessage(0);
,没有成功测试了处理任何想法
Log.v(TAG,"handler="+handler);
Log.v(TAG,"Sending test "+handler.sendEmptyMessage(0));
而且logcat的? :
06-14 22:47:34.700: V/DownloadAddOnProducts(7406): handler=Handler (com.kd7uiy.hamfinder.DownloadHandler) {527724dc}
06-14 22:47:34.700: V/DownloadAddOnProducts(7406): Sending test true
为了进一步减少这个,我有一个单元测试:
public class DownloadTester extends InstrumentationTestCase {
public void setUp() {
targetContext=getInstrumentation().getTargetContext();
}
public void testDownloadHandler() {
Looper.myLooper().setMessageLogging(new LogPrinter(Log.VERBOSE,"DownloadLooper"));
DownloadHandler handler=new DownloadHandler(targetContext,Looper.myLooper());
Log.v(TAG,"handler="+handler);
handler.sendEmptyMessage(0);
Log.v(TAG,"Send empty message");
}
而且logcat中显示:
06-14 23:03:46.068: V/DownloadHandler(8337): Created! Handler (com.kd7uiy.hamfinder.DownloadHandler) {52770be8}
06-14 23:03:46.068: V/DownloadHandler(8337): Created! Handler (com.kd7uiy.hamfinder.DownloadHandler) {52770f60}
06-14 23:03:46.068: V/DownloadTester(8337): handler=Handler (com.kd7uiy.hamfinder.DownloadHandler) {52770f60}
06-14 23:03:46.068: V/DownloadTester(8337): Send empty message
它创造了两个DownloadHandlers因为另一种是在我的单元测试集的另一个单元测试。
其中是处理程序正在申报? – Ryan
你是什么意思“没有成功”?你的意思是你从来没有看到'handleMessage()'的日志吗? –
你在哪里,何时以及如何实例化Handler? – CommonsWare