【问题标题】:Detect current foreground Activity and reload it检测当前前台活动并重新加载它
【发布时间】:2017-05-18 22:52:03
【问题描述】:

我的问题: 在 MainActivity 中,我开始通过 XML Parser 从 Internet 下载一些数据。此数据显示在我的应用程序的每个屏幕上。它就像一个数据库。

在下载和保存数据的同时,应用程序的用户可以在洞应用程序中导航。如果下载和保存数据完成,我要检测并重新加载当前前台Activity。我需要这样做,以显示新数据。

我可以使用 ActivityManager 检测当前 Activity,并可以使用“startActivity(Intent.makeMainActivity(componentName)”方法从 ComponentName 启动它。但是当我使用 ActionBar-BackButton 导航返回时,旧的 Activity 也在那里. 下载数据后,我在 AsyncTasks onPostExecute-Method 中执行此操作。

任何想法如何做到这一点?

protected void onPostExecute(MainActivity.UrlParams result) {
    Toast.makeText(result.contextMain, "Daten wurden erfolgreich aktualisiert!", Toast.LENGTH_LONG).show();
    //Aktualisiert aktive Activity damit die neuen Daten angezeigt werden!
    ActivityManager am = (ActivityManager) result.contextMain.getSystemService(ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
    Log.d("topActivity", "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName());
    ComponentName componentInfo = taskInfo.get(0).topActivity;
    componentInfo.getPackageName();
    Intent intent = Intent.makeMainActivity(componentInfo);
    result.contextMain.startActivity(intent);

    //myApp.getCurrentActivity().set
}

【问题讨论】:

    标签: android android-activity android-asynctask reload activity-finish


    【解决方案1】:
    1. 下载您的数据是服务,而不是在 AsyncTask 中
    2. MainActivity 中注册一些BroadcastReceiver onStart(),并在onStop() 中取消注册。在此接收器中刷新您的视图
    3. 下载数据后,进行广播以调用活动,该数据已准备就绪。 这种方法的缺点是您应该将数据保存在某处。您当然可以在意图中传递数据,但前提是数据很小

    【讨论】:

    • 有一个名为EventBus 的库可以为您执行此操作,非常棒。如果您不想使用该库,Tomasz 建议是最好的方法。
    • 谢谢,但有更简单的方法吗?
    • 正如 danypata 提到的,您可以使用 EventBus 库。我认为这是最简单,很好的方法,没有任何黑客和模糊代码
    • 我读了一点“入门”和“模式”,我认为 ASYNK 模式适合我。我希望它像看起来一样易于使用
    • @danypata 我创建了 MessageEvent 类在 onPostExecute 我发布了 eventMessage “重新加载”,并在我在 onStart / onStop 中注册和取消注册的活动中,但方法 onEventAsync 没有被调用......我必须做什么做什么?
    猜你喜欢
    • 2012-01-09
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 2020-04-22
    相关资源
    最近更新 更多