Java 未使用startService调用onStartCommand

Java 未使用startService调用onStartCommand,java,android,Java,Android,我想从我的活动课开始一项服务。问题是,onStartCommand从未被调用。我把断点放在那个里,它永远不会被击中。我的例子非常简单,我不明白为什么它不起作用 MainActivity.java: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(sa

我想从我的活动课开始一项服务。问题是,
onStartCommand
从未被调用。我把断点放在那个里,它永远不会被击中。我的例子非常简单,我不明白为什么它不起作用

MainActivity.java:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent serviceIntent = new Intent(TestService.class.getName());
        serviceIntent.putExtra("UserID", "123456");
        serviceIntent.setPackage(this.getPackageName());
        startService(serviceIntent);
    }
}
public class TestService extends Service {
    public TestService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }
}
<application
    ...
    <service
        android:name=".TestService"
        android:enabled="true"
        android:exported="true"></service>
    ...
</application>
如果我删除
serviceIntent.setPackage(this.getPackageName())我得到以下错误:

java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=package.TestService (has extras) }
这就是为什么我添加它来消除这个错误。但它仍然不起作用

TestService.java:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent serviceIntent = new Intent(TestService.class.getName());
        serviceIntent.putExtra("UserID", "123456");
        serviceIntent.setPackage(this.getPackageName());
        startService(serviceIntent);
    }
}
public class TestService extends Service {
    public TestService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }
}
<application
    ...
    <service
        android:name=".TestService"
        android:enabled="true"
        android:exported="true"></service>
    ...
</application>
AndroidManifest.xml:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent serviceIntent = new Intent(TestService.class.getName());
        serviceIntent.putExtra("UserID", "123456");
        serviceIntent.setPackage(this.getPackageName());
        startService(serviceIntent);
    }
}
public class TestService extends Service {
    public TestService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }
}
<application
    ...
    <service
        android:name=".TestService"
        android:enabled="true"
        android:exported="true"></service>
    ...
</application>
请试试这个

外接程序活动类


您没有正确构建
意图。将其更改为
newintent(this,TestService.class)
,您可以删除
setPackage()
调用。谢谢,这解决了我的问题!谢谢你的回答。你也可以请起来投票,这样对其他人也有用。