0

我的问题: 在MainActivity中,我开始通过XML Parser从Internet下载一些数据。该数据显示在我的应用程序的每个屏幕上。它就像一个数据库。检测当前前台活动并重新加载它

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

我可以使用ActivityManager检测当前活动,并可以使用ComponentName和startActivity(Intent.makeMainActivity(componentName))方法来启动它,但是当我使用ActionBar-返回按钮。 我这样做的AsyncTasks onPostExecute法下载数据后。

任何想法怎么办呢?

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
  1. 下载你的数据服务,而不是在的AsyncTask
  2. 在您的MainActivityonStart()中注册一些BroadcastReceiver,并在onStop()中取消注册。在此接收器中刷新您的视图
  3. 当数据下载完成后,进行广播以调用活动,数据已准备就绪。 这种方法的缺点是你应该将数据保存在某个地方。你当然可以传递数据,但只有当数据很小时
+1

有一个名为'''EventBus''的库,可以为你做到这一点,它很棒。如果你不想使用这个库,托马斯建议的是最好的方法。 – danypata

+0

谢谢,但有一个简单的方法来做到这一点? – Goetti

+0

随着danypata提到,你可以使用'EventBus'库。我认为这是最简单,最好的方法,没有任何黑客和模糊代码 –

相关问题