Dans une activité, j'ai un certain bout de code qui se déclenche au large un message:Pourquoi mon paquet à l'intérieur de android.os.Message est-il réinitialisé?
Message m = _handler.obtainMessage(UPDATE_PROGRESS);
Bundle bundle = new Bundle();
bundle.putInt(BUNDLE_KEY, 50);
m.setData(bundle);
Log.d(LOG_TAG, "value " + bundle.getInt(BUNDLE_KEY, 0)); // prints 50
Log.d(LOG_TAG, "sent:" + _handler.sendMessage(m)); // prints true
Dans une autre partie de l'activité, je traitais comme ceci:
public void handleMessage(final android.os.Message msg)
{
switch(msg.what)
{
case UPDATE_PROGRESS:
post(new Runnable()
{
@Override
public void run()
{
Bundle aBundle = msg.getData();
Log.d(LOG_TAG, "value in bundle=" +
aBundle.getInt(BUNDLE_KEY, 0)); // prints 0
Log.d(LOG_TAG, "contains 'progress' : " +
aBundle.containsKey(BUNDLE_KEY)); // prints 'false'
}
});
break;
}
Pourquoi le Bundle pas conservé dans le message? Qui réinitialise les valeurs du Bundle?