启动服务

时间:2011-04-29 20:54:41

标签: android

我刚刚开始开发android并且一直在阅读有关服务here的内容。我已经创建了一个服务,然后我尝试在一个活动中启动,但我无法解决为什么它不会显示Toast通知。

我有以下活动:

package com.example;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

public class Example extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        Context context = getApplicationContext();

        Intent intent = new Intent(context, MService.class);
        startService(intent);
        setContentView(R.layout.main);
    }
}

在我的清单中我有这个:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example"
  android:versionCode="1"
  android:versionName="1.0">
<application android:label="example" android:icon="@drawable/icon">
    <activity android:name="Example"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    <service android:name=".MService" />
    </activity>
</application>

然后我的服务看起来像这样:

package com.example;

import android.app.IntentService;
import android.content.Intent;
import android.widget.Toast;

public class MService extends IntentService {

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

@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) {
    Toast.makeText(this, "Systems starting", Toast.LENGTH_SHORT).show();
}

}

我知道你的意思并不是要覆盖onStartCommand,但这更像是测试练习,因为我也没试过

3 个答案:

答案 0 :(得分:0)

尝试在onStartCommand内反转行的顺序 - 将super调用分配给int变量,弹出Toast然后返回该变量。即使这不起作用,它也是覆盖方法的首选方式。

答案 1 :(得分:0)

服务是清单中活动的子项,因此无法找到服务。

答案 2 :(得分:0)

您可以使用这一行代码直接从活动启动服务类。

startService(new Intent(getBaseContext(),MyService.class));