-1

Я пытаюсь создать службу, которая будет работать в фоновом режиме и помещать уведомление в строку состояния каждые 10 секунд (только для тестирования).Служба поддержки Android и AlarmManager

Я просмотрел много сообщений здесь, но все еще не смог найти справку.

По какой-то причине, когда я вызываю AlarmManager для запуска Сервиса, приложение дробят. Пожалуйста, совет.

Это "Главный класс" Код:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_user_screen); 
    MyAlarmManager.scheduleAlarms(this); 

Это код AlarmManager:

public class MyAlarmManager extends BroadcastReceiver { 

    private static final int PERIOD=1000*10; // 15 minutes 
    private static final int INITIAL_DELAY=500; // 5 seconds 

    @Override 
    public void onReceive(Context ctxt, Intent i) { 
     scheduleAlarms(ctxt); 
    } 

    static void scheduleAlarms(Context ctxt) { 
    AlarmManager mgr= (AlarmManager)ctxt.getSystemService(Context.ALARM_SERVICE); 
    Intent i=new Intent(ctxt, MyService.class); 
    PendingIntent pi=PendingIntent.getBroadcast(ctxt, 0, i, 0); 
    Log.i("My Log", "Alarm Manager Started ......... Alarm Manager Started"); 

    mgr.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime() + INITIAL_DELAY, PERIOD, pi); 
    } 
} 

Это "Сервис" Код:

public class MyService extends Service { 
private NotificationManager mNM; 
private final IBinder mBinder = new LocalBinder(); 
private int NOTIFICATION = R.string.service_started; 

public class LocalBinder extends Binder { 
    SecRssService getService() { 
     return SecRssService.this; 
    } 
} 

@Override 
public void onCreate() { 
    mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 
    Log.i("My Log", "Received onCreate Service !!!!!!!!!!!!!!!!!!!"); 

    showNotification(); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.i("My Log", "Received onStartCommand id " + startId + ": " + intent); 
    Toast.makeText(this, R.string.service_started, Toast.LENGTH_SHORT).show(); 
    showNotification(); 

    // This service will continue running until it is explicitly stopped, so return sticky. 
    return START_STICKY; 
} 

@Override 
public void onDestroy() { 
    // Cancel the persistent notification. 
    mNM.cancel(NOTIFICATION); 
    Toast.makeText(this, R.string.service_stopped, Toast.LENGTH_SHORT).show(); 
} 

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

private void showNotification() { 

    CharSequence text = getText(R.string.service_started); 

    Notification noti = new Notification.Builder(getBaseContext()) 
     .setContentTitle(getText(R.string.noto)) 
     .setContentText("Test Notification ON") 
     .setSmallIcon(R.drawable.ic_launcher) 
     .build(); 
} 
} 

Это мой журнал

08-02 11:09:48.872: E/AndroidRuntime(9550): Caused by: java.lang.ClassCastException: com.homeapps4u.sec_ticker_rss.MyService cannot be cast to android.content.BroadcastReceiver 
08-02 11:09:48.872: E/AndroidRuntime(9550):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:2400) 
08-02 11:09:48.872: E/AndroidRuntime(9550):  ... 10 more 

Просьба сообщить, где я ошибаюсь.

Большое спасибо.

+0

Опубликовать трассировку стека, если вы хотите получить помощь при сбое. –

+0

Пожалуйста, может кто-нибудь помочь? – eyal

+0

Вы пытаетесь использовать услугу как BroadcastReceiver. Они не то же самое, вы не можете этого сделать. –

ответ

-1

Спасибо, я использовал:

 PendingIntent pi=PendingIntent.getService(ctxt, 0, i, 0); 

На MyAlarmManager.

Смежные вопросы