能否請一些建議的替代方法的一個活動是利用兩種不同的處理程序,或者讓我知道,這種方法好不好?多個處理程序可重用的代碼
詳情: 我在開發與Microchip的ADK Android的入門套件使用一些代碼的過程。一切都運行平穩,但是,我有一個問題,有兩個不同的處理程序在代碼中運行,它的工作原理,但我注意到,它不被推薦。 我用來創建時間延遲的第一個處理程序,並使用post命令啓動結果。第二個處理程序用於Microchip提供的用於與USB附件框架文件進行通信的示例代碼。我更喜歡只修改Microchip代碼而不是重寫它。 類似代碼:
public class MainActivity extends Activity
{ ...
final Handler mHandler = new Handler(); // handler for startTimeDelay
...
protected void onCreate(Bundle savedInstanceState)
{ super.onCreate(savedInstanceState);
...
Button btnSetTimeDelay = (Button) findViewById(R.id.btnChangeTimeDelay);
btnSetTimeDelay.setOnClickListener
( new View.OnClickListener()
{ public void onClick(View v)
{
setBackgroundColorLinearLayout(color.holo_red_dark); //red background
displayLockIsOpen(false); // display closed lock message
startTimeDelay(); // wait to open the lock
}
}
);
} // onCreate
...
final Runnable mUpdateResults = new Runnable()
{ public void run()
{ setBackgroundColorLinearLayout(color.holo_green_dark); //green background
displayLockIsOpen(true); // display open lock message
}
};
protected void startTimeDelay()
{ Thread t = new Thread()
{ @override
public void run()
{ SystemClock.sleep(global_delay);
mHandler.post(mUpdateResults); // run mUpdateResults code
};
};
t.start();
} // startTimeDelay
// USB accessory handler from Microchip, for ADK
private Handler handler = new Handler()
{ @override
public void handleMessage(Message msg)
{
...
switch(msg.what)
{ case USBAccessoryWhat:
...lots of code here from Microchip
} // switch msg.what
} // handleMessage
}; // Handler
} // MainActivity
我發現我可以刪除行:'最終處理程序mHandler =新的處理程序();'和重命名'mHandler.post(mUpdateResults);''到handler.post(mUpdateResults);'。 Microchip的代碼重寫Handler.handleMessage的事實對Handler.post方法沒有影響,並且它正常工作。 – ESC 2012-08-01 04:11:47