【发布时间】:2012-04-30 10:20:11
【问题描述】:
我正在开发两个应用程序。第一个有一个按钮,当按下它时会启动一个带有一些数据的隐式意图。 Intent 由注册在其他应用的主要活动上的inten-filter 捕获。
我需要的是子活动立即将一些数据发送回父(在后台)而不完成,并且必须留在前台。
我试图通过startActtivityForResult() 和OnActivityResult() 的方式来实现这一点,但没有成功。事实上,这种方法只有在子活动完成时才有效。
我正在寻找其他解决方案,例如服务...但我是新手,至少需要找到正确的路径。
提前致谢。
我给你一些进一步的细节:
第一个活动(父)启动以下意图:
Intent intent = new Intent();
intent.setAction("xx.xx.xxxxx");
intent.putExtra("Data1", data1);
intent.putExtra("Data2", data2);
...
startActivityForResult(intent,MANAGE_CODE);
OnActivityResult() 方法是
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
switch (requestCode) {
case MANAGE_CODE:
switch (resultCode) {
case 0:
...
break;
}
break;
}
}
子活动执行此操作:
Intent caller = getIntent();
if ( caller.getAction().equals("xx.xx.xxxxx") ) {
Intent intent = new Intent();
intent.putExtra("data", "12345");
// Set result
getParent().setResult(0, intent);
}
我省略了实现细节...如果我不关闭子活动(例如使用 finish() 方法),我看不到 setResult() 调用有效
【问题讨论】:
-
“父”应用将如何响应?它在后台,可能会被您无法控制的平台杀死。无论如何它会如何收到结果?请解释您要达到的目标。我怀疑你可能需要重新考虑你的方法,或者正如你所说的,作为服务。
-
也许在两个活动之间使用 ResultReceiver
-
亲爱的西蒙,你可能是对的。我不能这样做,因为父活动没有运行。可能需要另一种方法。 Waqas,我会调查 ResultReceiver。谢谢。
标签: android android-intent android-service android-activity