java - AlarmManager 不会启动服务

标签 java android service alarmmanager

我只是按照 API Demo 中的确切代码操作,但我的服务在设置 AlarmManager 后无法启动。

所以我的服务是

public class CourseWatcherRefreshService extends Service {

    private CourseDbAdapter mDbHelper;
    private CourseWatcher watcher;

    @Override
    public void onCreate() {
        Toast.makeText(this, "Watcher Refresh Service starts", Toast.LENGTH_SHORT).show();
        mDbHelper = new CourseDbAdapter(this);
        mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        mDbHelper.open();
        Thread thread = new Thread(null, mTast, "CourseWatcherRefreshService");
        thread.start();
        super.onCreate();

    }

    @Override
    public void onDestroy() {
        mDbHelper.close();
        super.onDestroy();

    }

    Runnable mTast = new Runnable() {
        // some work
    };

    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }

    private final IBinder mBinder = new Binder() {
        @Override
        protected boolean onTransact(int code, Parcel data, Parcel reply, int flags)
                throws RemoteException {
            return super.onTransact(code, data, reply, flags);
        }
    };

}

同样在我的AndroidManifest.xml中,我放了这样的代码

<service
    android:name=".CourseWatcherRefreshService"
    android:process=":remote" >
</service>

我使用这样的代码来切换 AlarmManager

PendingIntent refreshIntent = PendingIntent.getActivity(NaviScreen.this, 0, new Intent(NaviScreen.this, CourseWatcherRefreshService.class), 0);
long firstTime = SystemClock.elapsedRealtime();
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstTime, 30*1000, refreshIntent);

上面的代码与API Demo中的AlartService示例几乎相同,但是我的代码无法运行,我看不到我的服务开始运行的任何迹象。

最佳答案

当您应该使用 getService 时,您却在使用 getActivity。因此,将 PendingIntent 行更改为

PendingIntent refreshIntent = PendingIntent.getService(NaviScreen.this, 0, new Intent(NaviScreen.this, CourseWatcherRefreshService.class), 0);

关于java - AlarmManager 不会启动服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8291931/

相关文章:

java - 单击 ListView 上的按钮会显示相同的输出

Android Material Design 圆形 progress_bar

安卓 : Only one button clickable at once

c# - 在托管服务中访问上下文

service - 将业务验证错误从服务层传递到表示层

java - float : it does not return the fraction 的问题

java - 编写解释器,需要帮助表示这些数据

.net - COM+ 组件由 C# 中的 Windows 服务托管,用于控制外部设备

java - 无法加载编解码器 'Lucene410'

java - System.nanoTime/System.currentTimeMillis = 107(这应该是 1e6 吗?)