android – IntentService不会开始使用AlarmManager

我知道有很多问题,但我真的不知道我的错误在哪里.

我的服务已在AndroidManifest.xml文件注册

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.app" >
        ...
        <service android:name="com.example.android.app.ScheduledService">
        </service>
    </application>
</manifest>

我的服务扩展了IntentService

public class ScheduledService extends IntentService {
    public ScheduledService() {
        super("ScheduledService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        Log.d(getClass().getSimpleName(),"I ran!");
    }
}

我的活动启动服务

public class MainActivity extends ActionBarActivity {

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

        Log.d(getClass().getSimpleName(),"Setting alarm!!");

        AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

        Intent alarmIntent = new Intent(this,com.example.android.app.ScheduledService.class);
        PendingIntent pending = PendingIntent.getBroadcast(this,alarmIntent,0);

        alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,SystemClock.elapsedRealtime() +
                        10 * 1000,pending);
    }
}

我在日志中没有看到任何异常.还有什么我应该做的设置我的闹钟?

解决方法

documentation所示,PendingIntent.getBroadcast()用于检索将执行广播的PendingIntent,如调用Context.sendBroadcast().

您需要调用PendingIntent.getService(),这将启动IntentService:

PendingIntent pending = PendingIntent.getService(this,0);

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...