2010-11-18 4 views
1

私の活動がまだ遅れているのは混乱しています。私はいくつかの方法があり、それぞれがダウンロードしたり、データを処理したり、物事を比較したりといった独自の作業をしているリモートサービスを使用しています。選択した間隔で通知し、通知システム上の変更をユーザーに通知します。serviceとhandler.postメソッドでstuffを実行しても、私のアクティビティはまだ遅れていますか?

私は最終的にウィジェットを追加し、アンドロイドがアクティビティを殺したとしてもサービスは実行を継続する必要があるため、各onPause()でバインドを解除します。 しかし、私はその部分が私の問題を引き起こさないことを理解しています。

しかし私の問題に戻って...サービスとhandler.postメソッドを実行すると、私の活動はまだ遅れています。

public class WarnService extends Service { 

    private Bitmap pic; 
    private boolean dataUpToDate; 

    private void loadData(){ 
    //code that downloads new data and sets the dataUpToDate variable 
    } 

    private void updateLayer(Bitmap bt){ 
    //code that updates some stuff if downloaded and local data differ 
    } 

    private IWarnService.Stub WServiceStub = new IWarnService.Stub() { 

    @Override 
    public void refreshData() throws RemoteException { 
     serviceHandler.post(new Runnable() { 

     @Override 
     public void run() { 
      loadData(); 
      if(!dataUpToDate){ 
      updateLayer(pic); 
      } 
     } 
     }); 
    } 

    } 
} 

また、私は活動を通じてupdateLayer(...)で更新されるprogressDialogを追加したいこのサービスへのリスナーですが、うまく機能していないthatsの。ここに

はコードがあります。 progressDialogを更新するにはどうすればよいですか?これまでリスナー、ハンドラ、インテント、または何ですか?

これを正しく行うにはどうすればよいですか?

答えて

0

私はスレッドを追加し、それにハンドラをアタッチするのを忘れました。だからコードがありませんでした:

private HandlerThread hThread; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    hThread = new HandlerThread("Processing thread"); 
    hThread.start(); 
    serviceHandler = new Handler(hThread.getLooper()); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    hThread.getLooper().quit(); 
} 
1

サービスがバックグラウンドで多少処理されている場合、アクティビティにはまだ若干の遅延が発生する可能性があります。サービスで使用するスレッドの優先度を下げてみてください。私は自分のプロジェクトの1つで同様の問題を抱えていました。私は自分のバックグラウンドスレッドの優先順位をPRIORITY_BACKGROUNDに設定しようとしました(またはそれに似た定数でした)。

編集:ここでは、スレッドの優先順位について読むことができます:http://developer.android.com/reference/android/os/Process.html

+0

私はProcess.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND)を追加しました。 run()には何も変わりません。私のメソッドがまだGUIスレッドで動作していることは確かです。 – danizmax

関連する問題