【问题标题】:Listening across activities in Android在 Android 中跨活动监听
【发布时间】:2011-03-01 10:02:26
【问题描述】:

如何在一个活动中监听另一个活动中触发的事件?

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

可以实现吗?

谢谢

【问题讨论】:

    标签: android listener


    【解决方案1】:

    已过时:

    Android 中交互活动通信的基础是Intents,它基本上是基于事件的 (a) 同步通信。我认为您所指的事件可能是发生的任何事情。

    您可能应该只定义一个特定于应用程序的Intent 并在 Facebook API 完成其请求时使用列表视图在活动中触发它。

    已编辑:

    ...而且,好吧,你追求的东西略有不同。活动可以而且将会被随意杀死:这应该让异步请求挂起(但我没有看过 FB API,所以我只是在猜测)。我认为您所描述的内容需要从您的应用程序中的Service 发出 Facebook 请求。然后你应该能够只使用基本的Observable/Observers:声明一个FriendObservable(最简单的实现:一个全局对象或单例),任何显示朋友的Activity都可以注册它自己。我认为您应该将此类FriendService 的生命周期限制为 Facebook API 交互,以尽量减少资源消耗。

    【讨论】:

    • 据我了解,您的意思是我可以在我的 facebook 活动中的 getfriends 请求的 onComplete 事件中使用意图和 startactivity 来启动带有朋友列表的活动。那不是我想要的。我再次编辑了我的问题以使其更清楚。
    【解决方案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();
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 2020-07-11
      • 2015-10-07
      • 1970-01-01
      • 2019-03-09
      相关资源
      最近更新 更多