0

問題: MainActivityで、XML Parserを使用してインターネットからデータをダウンロードし始めます。このデータは、アプリケーションのすべての画面に表示されます。それはデータベースのようなものです。現在のフォアグラウンドアクティビティを検出してリロードする

データをダウンロードして保存するときに、アプリケーションのユーザーが穴のアプリケーションをナビゲートできます。データのダウンロードと保存が完了したら、現在のフォアグラウンドアクティビティを検出してリロードします。私は新しいデータを表示するためにこれを行う必要があります。

ActivityManagerを使用して現在のアクティビティを検出し、メソッドstartActivity(Intent.makeMainActivity(componentName))を使用して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. で、あなたのデータがサービスでダウンロード
  3. MainActivityBroadcastReceiveronStart()に登録し、onStop()の登録を解除してください。この受信機であなたのビューをリフレッシュしてください。
  4. データがダウンロードされると、そのデータが準備されているコール活動にブロードキャストします。 この方法の欠点は、データをどこかに保存することです。あなたはもちろん、意図してデータを渡すことができますが、データが小さい場合に限ります
+1

これはあなたのために行う「EventBus'''というライブラリがあり、素晴らしいです。ライブラリを使用したくない場合は、Tomaszが提案した方法が最善の方法です。 – danypata

+0

ありがとうございますが、これを行う簡単な方法はありますか? – Goetti

+0

danypataが述べたように、あなたは 'EventBus'ライブラリを使うことができます。私はこれが最も簡単で素敵な方法だと思っています。ハッキングやコードを隠すことなく、 –

関連する問題