检测当前前景 Activity 并重新加载

Detect current foreground Activity and reload it

我的问题: 在 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
}
  1. 下载你的数据是服务,而不是在 AsyncTask
  2. onStart()MainActivity 中注册一些 BroadcastReceiver,并在 onStop() 中取消注册。刷新您在此接收器中的视图
  3. 数据下载完成后,广播调用activity,表示数据已准备就绪。 这种方法的缺点是您应该将数据保存在某个地方。你当然可以在意图中传递数据,但前提是数据很小