Messenger从捆绑onCreate中消失

时间:2011-12-23 18:56:19

标签: android

我正在尝试将Messenger用作appwidget和活动之间的IPC机制。

我执行以下操作: 我创建了一个intent,当我在appwidget上单击一个按钮时,它会启动一个特定的活动。

intent = new Intent(mContext, TorchLightActivity.class);
intent.putExtra(RPC, new Messenger(mHandler));
intent.putExtra(TYPE, mType);
...
final PendingIntent actionPendingIntent = PendingIntent.getActivity(mContext, 0, intent, 0);
remoteView.setOnClickPendingIntent(layout, actionPendingIntent);

当我点击我的小部件按钮时,会启动一项活动

onCreate(...)
final Bundle bun = getIntent().getExtras();
// Get null here
mMessanger = (Messenger) bun.get(FlashlightModule.RPC); 
// Working great
mType = bun.getInt(FlashlightModule.Type);

查看捆绑包时,我可以看到我唯一的额外数据是FlashlightModule.Type,例如int值。

意图是从一开始就使用额外内容创建的(请参阅Get the intent from onCreate in Android)并从头开始使用setData(请参阅Application widget with bundle?

是否有可能将AppWidget之间的Messenger传递给我自己的活动?

谢谢。

1 个答案:

答案 0 :(得分:0)

  

我正在尝试将Messenger用作appwidget和活动之间的IPC机制。

这没有任何意义。

你的AppWidgetProvider实例会活几毫秒 - 再过一段时间,你做错了。它永远不会有机会通过Messenger或任何其他方式将“IPC”用于您的活动。

此外,您永远不应该使用BroadcastReceiver(例如AppWidgetProvider)创建一些您希望活过onReceive()结尾的内容(在onUpdate()AppWidgetProvider,例如Handler,更不用说Messenger

当您的活动希望更新应用小部件的用户界面时,它可以创建RemoteViews并更新应用小部件。