我對此感到困惑。我正在使用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