Android Intent Service未被调用

时间:2017-09-27 04:58:57

标签: android android-intent android-intentservice

我还是Android新手并且正在学习如何使用Intent Service在非UI线程上工作的课程。但是,当我打电话给意向服务时,似乎没有任何事情发生。

以下是来自MainActivity的Intent Service调用

startIntentService = (Button) findViewById(R.id.button4);
startIntentService.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick (View v){
        Intent delayIntent = new Intent(getApplicationContext(), 
        DelayIntentService.class);
        startService(delayIntent);

这是DelayIntentService代码

public class DelayIntentService extends IntentService {
    public static final String ACTION_DELAY =
            "hinz.don.hour5.action.DELAY";
    public static final String EXTRA_MESSAGE =
            "hinz.don.hour5.extra.MESSAGE";
    public DelayIntentService() {
        super("DelayIntentService");
    }

    @Override
    protected void onHandleIntent (Intent intent){
        SystemClock.sleep(5000);
        Intent broadcastIntent = new Intent ();
        broadcastIntent.setAction(ACTION_DELAY);
        broadcastIntent.putExtra(EXTRA_MESSAGE, "UPDATED USING INTENT SERVICE");
        sendBroadcast(broadcastIntent);

以下是Manifest文件中的服务声明:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="hinz.don.hour5">

    <service android:name="hinz.don.Hour5.DelayIntentService"></service>

我在Intent Service代码上放置了一个调试中断,但它从不执行它

3 个答案:

答案 0 :(得分:0)

在您的代码中,与package =“hinz.don.hour5”和“hinz.don.Hour5.DelayIntentService”存在未命中匹配。用作hours5的包和用作Hours5的服务名称。        最好使用它     <service android:name=".DelayIntentService" /> 这将消除歧义

答案 1 :(得分:0)

在主活动声明之后,需要将Service声明置于Manifest文件的底部。一旦我移动它一切正常。

答案 2 :(得分:0)

你的Xml应该是这样的

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="hinz.don.hour5">
<applcation .......>

    <service android:name="hinz.don.hour5.DelayIntentService"></service>
</application>

如果这不起作用 参考

https://stackoverflow.com/a/15772151/8416317