0

我正在尝试创建一个简单的服务。

这是服务源

public class UploadService extends IntentService {

    public UploadService(String name) {
        super(name);
        // TODO Auto-generated constructor stub
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId){
        Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // TODO Auto-generated method stub
        Toast.makeText(this, "handling intent", Toast.LENGTH_SHORT).show();
    }

这是清单中服务的定义

<service 
    android:enabled="true" 
    android:name="com.sopla.Services.UploadService">
</service>

这是我在程序启动时调用的主Activity的onCreate方法中用来启动服务的代码

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

    Intent intent = new Intent(this,
            com.sopla.Services.UploadService.class);
    startService(intent);

我可以调试所有 onCreate 方法,但是在此之后程序挂起,并且我无法到达服务源代码中的断点。

我错过了什么?谢谢,卢卡

4

2 回答 2

0

感谢每一个人,但更好地检查 logcat 我发现了问题。
出于某种奇怪的原因,要求 Ide 添加 IntentService 的缺失成员会添加一个带有字符串的 costructor,但在运行时需要一个没有的构造函数。
从 costructor 中删除字符串参数解决了这个问题。

于 2014-11-20T09:28:14.600 回答
0

为你的 onStartCommand 试试这个:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    TODO do something useful
    return Service.START_NOT_STICKY;
}
于 2014-11-19T18:20:39.610 回答