服务与android:进程无法启动

时间:2017-05-29 17:53:06

标签: android service process manifest

我有一个简单的应用程序来测试android:process属性的服务。所以我的服务看起来像这样:

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”属性添加到服务声明中。在那之后服务没有开始。那么为什么这样呢?我应该在单独的过程中为启动服务做些什么改变呢?

2 个答案:

答案 0 :(得分:0)

我认为您必须执行此任务,即onHandleIntent()中的dowork()方法调用。因为您的服务类扩展了Intent服务而不是Service。

public class MyService extends IntentService {
static final String TAG = "MyService";

public MyService() {
    super("MyService");
}

@Override
protected void onHandleIntent(Intent intent) {
 doJob();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {


}

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();
}

}

答案 1 :(得分:0)

哦对不起这是愚蠢的错误 - 我必须在Android监视器选项卡中选择新进程)感谢所有