在Android中监听各种活动

时间:2011-03-01 10:02:26

标签: android listener

如何在活动中收听另一项活动中触发的事件?

更具体地说,我创建了一个菜单,其中包含一个活动以连接到Facebook并获取用户的朋友(一旦用户被记录,朋友列表就会自动异步请求,并且在onComplete事件中填充全局ArrayList) 。假设用户在请求完成之前离开菜单,并转到另一个显示朋友列表的活动。要填充列表,我需要知道getfriends请求是否完整以及ArrayList是否已填充。如果不是,我需要知道什么时候开始填写我的朋友列表。我不确定异步请求在离开活动时是否被终止,如果没有,我怎么知道它已经完成。

可以实现吗?

谢谢

2 个答案:

答案 0 :(得分:3)

已过时:

Android中的活动间通信的基础是Intents,它基本上是基于事件的(a)同步通信。我认为你提到的事件可能是发生的任何事情。

您应该只定义一个特定于应用程序的Intent,并在Facebook API完成其请求时使用listview在活动中将其激活。

编辑:

......而且,好的,你在稍微不同的事情之后。活动可以而且将会被肆无忌惮地杀死:这应该让异步请求悬而未决(但我还没看过FB API,所以我只是在猜测)。我认为您所描述的内容需要在您的应用程序中使用Service进行Facebook请求。然后你应该只能使用基本的Observable / Observer:声明一个FriendObservable(最简单的实现:一个全局对象或单例),任何显示朋友的Activity都可以自己注册。我认为你应该限制这种FriendService到Facebook API交互的生命周期,以最大限度地减少资源消耗。

答案 1 :(得分:2)

我希望它可以帮到你

intentApplication = new Intent(Applic.this, com.rActivity.class);
startActivityForResult(intentApplication, SCANNER_REQUEST_CODE);

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (resultCode == Activity.RESULT_OK && requestCode == SCANNER_REQUEST_CODE) {
            Bundle extras = data.getExtras();       
            String result = extras.getString("SCAN_RESULT");    
            //Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show();

    }
}