AsyncTask の完了後に開始されるサービスがあります。ただし、エミュレーターで実行中のアプリを管理しようとすると、そこにはありません。UIスレッドのコードは次のとおりです。
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId() == R.id.button1) {
if (rBoot.isChecked()) {
registerReceiver(new BootReceiver(), filter);
}
if (cb.isChecked())
sent.putInt("progress", -10);
else
sent.putInt("progress", sb.getProgress());
prog.show();
new ProgressUpdate().execute(0);
}
if (v.getId() == R.id.button2) {
stopService(i);
}
}
および AsyncTask:
private class ProgressUpdate extends AsyncTask<Integer, String, String> {
@Override
protected String doInBackground(Integer... params) {
// TODO Auto-generated method stub
for (int i = 0; i <= 100; i++) {
try {
Thread.sleep((long) 31.4);
progress = i;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (progress == 100) {
prog.dismiss();
}
}
return "done";
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
startService(new Intent(Activity.this, Service.class)
.putExtra("bun", sent));
}
}
ダイアログが表示されて閉じられますが、サービスは開始されません。