android服务问题

时间:2011-07-19 07:12:21

标签: android service boot

我的简单服务有问题。服务应该“自动”运行,因为我已经知道启动是否完成。 我发现了一个简单的例子,我的代码是相同的,但它不起作用,日志中没有任何内容。这是[Boot Service at Boot] [1]

的示例
package com.service;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class MainService extends Service
{
    public IBinder onBind(Intent intent)
    {
        return null;
    }

    @Override
    public void onCreate()
    {
        Log.v("StartServiceAtBoot", "StartAtBootService Created");
    }

    @Override
    public void onStart(Intent intent, int startId)
    {
        Log.v("StartServiceAtBoot", "StartAtBootService -- onStart()");
    }

    @Override
    public void onDestroy()
    {
        Log.v("StartServiceAtBoot", "StartAtBootService Destroyed");
    }

}


  [1]: http://www.androidcompetencycenter.com/2009/06/start-service-at-boot/

这里是用于Boot-completed Action的braodcast接收器:

package com.service;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MainServiceReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
        {
            Log.i("Test", "Test");
            Intent i = new Intent();
            i.setAction("com.service.MainService");
            context.startService(i);
        }
    }
}

这里是清单文件:

     <?xml version="1.0" encoding="utf-8"?>
     <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.service"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="7" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-        permission>

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <service android:name="com.service.MainService">
            <intent-filter>
                    <action  android:name="android.action.intent.BOOT_COMPLETED">   
            </action>
        </intent-filter>
    </service>

<receiver android:name="com.service.MainServiceReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED">
        </action>
        <category android:name="android.intent.category.HOME">
        </category>
    </intent-filter>
</receiver>

</application>
在Android错误日志中

始终存在此错误:

  

9009应用程序更改Receiver updates1 application packageName = com.service ....

请帮助我,我认为这是一件小事,但我没有看到错误。

谢谢

2 个答案:

答案 0 :(得分:0)

在你的代码中:             意图i =新的Intent();             i.setAction( “com.service.MainService”);             context.startService(ⅰ); 但是在清单中你没有声明intent-filter来接收这个动作。

答案 1 :(得分:0)

您只需要通过调用startSerice: startService(new Intent(MainServiceReceiver .this,MainService.class)); 如果您有任何问题,请添加我的雅虎或Skype:fsoft_duonghv