AlarmManager не запускает службу - PullRequest
2 голосов
/ 28 ноября 2011

Я просто следовал точному коду в 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);

И приведенный выше код практически совпадает с примером AlartService в API Demo, но мой код не работает, я не вижу признаков того, что мой сервис начинает работать.

Ответы [ 2 ]

6 голосов
/ 28 ноября 2011

Вы используете getActivity, когда вы должны использовать getService. Поэтому измените строку PendingIntent на

PendingIntent refreshIntent = PendingIntent.getService(NaviScreen.this, 0, new Intent(NaviScreen.this, CourseWatcherRefreshService.class), 0);
1 голос
/ 28 ноября 2011

попробуйте это:

Intent updateIntent = new Intent() 
updateIntent.setClass(NaviScreen.this, CourseWatcherRefreshService.class) 
PendingIntent pendingIntent = PendingIntent.getService(this, 0, updateIntent, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...