サービスのプロセス属性android:をテストするための簡単なアプリケーションがあります。だから私のサービスは、次のようになります。android:serviceが起動しないサービス
public class MyService extends IntentService {
static final String TAG = "MyService";
public MyService() {
super("MyService");
}
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG,"onCreate()");
}
@Override
protected void onHandleIntent(Intent intent) {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
doJob();
return START_STICKY;
}
private void doJob() {
new Thread(new Runnable() {
@Override
public void run() {
Log.i(TAG,"job started");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i(TAG,"job stopped");
stopSelf();
}
}).start();
}
}
私は次のように活動からサービスを開始しようとしている:
findViewById(R.id.startServiceBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startService(new Intent(getApplicationContext(),MyService.class));
}
});
すべてが正常に動作します。今、私はandroid:process = ":service"属性をマニフェストのサービス宣言に追加しています。そしてそのサービスが始まった後ではありません。だからなぜ、私は別のプロセスでサービスを開始するために変更する必要がありますか?
のおかげで、あなたのサービスが実行されている場合はどのようにチェックしましたか? – F43nd1r
あなたの問題ではありませんが、インテントサービスを間違って使用しています。インテントサービスのためにonStartCommandで何もしてはいけません。それはすべてonHandleIntentにあるべきです。 onStartCommandでそれを行うことで、IntentServiceの組み込みの要求処理メソッドが破られてしまいます。 –
@ F43nd1rスタジオでアンドロイドモニタタブを使用してチェックしています。サービスはdoJob()メソッドを起動して、メッセージをlogcatに出力します。これらのメッセージが表示された場合は、サービスが実行中であることを意味します。 – borune