我有一个简单的应用程序来测试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”属性添加到服务声明中。在那之后服务没有开始。那么为什么这样呢?我应该在单独的过程中为启动服务做些什么改变呢?
答案 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监视器选项卡中选择新进程)感谢所有