2011-08-01 9 views
0

私は、AsyncTaskを拡張するクラスを持っています。私はクラスBroadcast AsyncTaskからブロードキャストを送信できますか?

バックグラウンドタスクを実行すると、ポスト実行時に他のクラスの静的プロパティがバックグラウンドの結果と等しくなります。他のクラスの受信者が更新インターフェイス

になると、ブロードキャストしますここ

onPostExecuted

のコード
protected void onPostExecute(String result) { 
    Log.d(tag, "post executed "+result); 
    // do sth here 

    if (result != null){ 
     result = result.trim(); 
     String temp_result[]; 
     if (result.contains("|")){ 
      temp_result = result.split("\\|"); 
      MyGPS.location_info = temp_result[1];// 
      Log.d(result, "contains | : "+MyGPS.location_info); 
     }else if (result.equalsIgnoreCase("300 OK")){ 
      Log.d(result, "in 300 OK BUT UNKNOWN : "+ result); 
      MyGPS.location_info = "Unknown"; 
     }else if (result.equalsIgnoreCase("400 ERROR")) 
      Log.d(result, "400 ERROR : "+ result); 
     else Log.d(result, "else : "+ result); 

     //assemble data bundle to be broadcasted 
     //myFilteredResponseThread = new Intent(GPS_FILTER); 
     myFilteredResponseThread.putExtra("location_info_post", 

MyGPS.location_info); 
        // CAN"T USE SEND BROADCAST METHOD ? 


     //myFilteredResponseThread. 
     //Log.e(">>GPS_Service<<", "location_info"+MyGPS.location_info); 
    } 
} 

その後、私はsendBroadcastメソッドを記述することはできません、それはなぜ未定義のですか?

+0

あなたはAsyncTaskを拡張し、このクラスに活動コンテキストを渡していないかもしれません。あなたがアクティビティコンテキストを渡している場合は、context.sendbroadcat(intent)を使用してください。 – Vivek

+0

私の内部クラスのGPSListenerからこのスレッドAysnctTaskを呼び出すとLocationListenerが実装され、この内部クラスはクラス拡張サービスに含まれているので、どうすればAsyncTaskにコンテキストを渡すことができますか? Thx – sayvortana

答えて

0

私が正しく理解していれば、以下が解決策です。

class MyService extends Service{ 

    @Override 
    public IBinder onBind(Intent arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

     class GPSListener implements LocationListener{ 
     public void onLocationChanged(Location arg0) { 
      // TODO Auto-generated method stub 
        // you can get context as follow 
      MyService.this.getBaseContext().sendBroadcast(new Intent("Hi")); 
     } 

     public void onProviderDisabled(String arg0) { 
      // TODO Auto-generated method stub 

     } 

     public void onProviderEnabled(String arg0) { 
      // TODO Auto-generated method stub 

     } 

     public void onStatusChanged(String arg0, int arg1, Bundle arg2) { 
      // TODO Auto-generated method stub 

     } 

    } 

     } 

}

+0

Thx boy、私は、MyService.this.getBaseContext()。sendBroadcast(新しいインテント( "Hi"))から混乱し始めます。 ここでは新しいインテント( "こんにちは")cuz私は1 2私の初心者ですので、私のAsyncTaskクラスに文脈を送って – sayvortana

+0

あなたはどのようにUの呼び出しスレッドAysnctTaskを表示することができます – Vivek

関連する問題