私は Android サービスを持っています。onStart メソッドで Intent アクティビティから多くの文字列を取得し、AsynTask を実行してインターネットからファイルをダウンロードします。
アクティビティが実行されている場合、これは正常に機能しますが、アクティビティを停止すると、onStart メソッドが再起動されますが、意図が null であるため、nullPointerException が発生します。
onStart で service dont エントリを実行し、最初の ayntask を続行してすべてのファイルをダウンロードするにはどうすればよいですか?
これは私のコードです
@Override
public void onStart(Intent intent, int startId) {
desde = intent.getIntExtra("desde", 0);
hasta = intent.getIntExtra("hasta", 1);
email = intent.getStringExtra("email");
password = intent.getStringExtra("password");
new DescargaFotos().execute();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
Inicio.java (UI アクティビティ)
Intent iService = new Intent(contexto,
ServiceDownloader.class);
iService.putExtra("desde", 0);
iService.putExtra("hasta", 5);
iService.putExtra("email", email);
iService.putExtra("password", password);
startService(iService);
編集:
新しい質問:
私は IntentService を使用しており、次のようにサービスをバインドしています。
Intent iService = new Intent(contexto,
ServiceDownloader.class);
ServiceConnection serviceConector = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
Log.i("INFO", "Service bound ");
}
@Override
public void onServiceConnected(ComponentName name,
IBinder service) {
Log.i("INFO", "Service Unbound ");
}
};
iService.putExtra("desde", 0);
iService.putExtra("hasta", 50);
iService.putExtra("email", email);
iService.putExtra("password", password);
startService(iService);
bindService(iService, serviceConector,
Context.BIND_AUTO_CREATE);
そして今、私の問題は、私のギャラクシーネクサスで、アプリのランタイムリストに入ってアプリを破壊すると、サービスが停止し、ダウンロードを停止し、通知の送信を停止するなどですか? これを解決するには、どのようにサービスをバインドする必要がありますか?