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