8

RoboSpiceライブラリを使用して非同期タスクを実行しました。彼らの例から、スパイス サービスは BaseActivity で宣言され、アクティビティの onStart メソッドで開始され、アクティビティの onStop メソッドで停止します。すべて問題ありませんが、インターネットからファイルをダウンロードしたいときに、別のアクティビティに変更すると、スパイス サービスが停止するため、このダウンロード タスクがキャンセルされます。次のようになります。

public abstract class BaseActivity{
  /** The request manager. */
private SpiceManager requestManager = new SpiceManager(RequestService.class);   
  @Override
   protected void onStart() {   
      requestManager.start(this);
      super.onStart();     

   }

  @Override
  protected void onStop() {
    requestManager.shouldStop();
    super.onStop();
  }
} 

したがって、Spice サービスからダウンロード タスクを実行し続け (このタスクは UI に触れません)、別のタスクは正常に動作し (アクティビティを停止するとキャンセルできることを意味します)、安全な方法はあるのでしょうか。ライフサークル。

4

2 に答える 2

2

アプリケーション クラスで spicemanager インスタンスを宣言し、アクティビティでアクセスしてバックグラウンド サービスを開始します。

public class MyApplication extends Application {

    private static MyApplication instance;
        private SpiceManager spiceManager = new SpiceManager(RequestService.class);

    @Override
    public void onCreate() {
        super.onCreate();
    }


    public SpiceManager getManager()
    {
       return spiceManager;
    }

}

アクティビティでは、それを呼び出すことができます。以下の私のコードを参照してください。

((MyApplication) getApplicationContext()).getSpiceManager().startService(........);
于 2013-11-08T15:47:19.133 に答える