检测当前前景活动并重新加载

时间:2017-01-04 15:24:45

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

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

在下载和保存数据时,应用程序的用户可以浏览漏洞应用程序。如果下载和保存数据已完成,我想检测并重新加载当前的前台活动。我需要这样做,以显示新数据。

我可以使用ActivityManager检测当前的Activity,并可以使用方法“startActivity(Intent.makeMainActivity(componentName)”使用ComponentName启动它。但是当我使用ActionBar-BackButton导航回来时,旧的活动也在那里。 我在下载数据后在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 个答案:

答案 0 :(得分:1)

  1. 下载您的数据是服务,而不是AsyncTask
  2. BroadcastReceiver的{​​{1}}中注册一些MainActivity,并在onStart()中取消注册。在此接收器中刷新您的视图
  3. 下载数据时,进行广播以调用活动,数据已准备就绪。 这种方法的缺点是你应该将数据保存在某个地方。您当然可以在意图中传递数据,但仅在数据很小时