मैं एक निश्चित गतिविधि शुरू होने पर एक सेवा को कॉल करना चाहता हूं। तो, यहाँ सेवा वर्ग है:
public class UpdaterServiceManager extends Service {
private final int UPDATE_INTERVAL = 60 * 1000;
private Timer timer = new Timer();
private static final int NOTIFICATION_EX = 1;
private NotificationManager notificationManager;
public UpdaterServiceManager() {}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// Code to execute when the service is first created
}
@Override
public void onDestroy() {
if (timer != null) {
timer.cancel();
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startid) {
notificationManager = (NotificationManager)
getSystemService(Context.NOTIFICATION_SERVICE);
int icon = android.R.drawable.stat_notify_sync;
CharSequence tickerText = "Hello";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
Context context = getApplicationContext();
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
Intent notificationIntent = new Intent(this, Main.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText,
contentIntent);
notificationManager.notify(NOTIFICATION_EX, notification);
Toast.makeText(this, "Started!", Toast.LENGTH_LONG);
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// Check if there are updates here and notify if true
}
}, 0, UPDATE_INTERVAL);
return START_STICKY;
}
private void stopService() {
if (timer != null) timer.cancel();
}
}
और यहां बताया गया है कि मैं इसे कैसे कहता हूं:
Intent serviceIntent = new Intent();
serviceIntent.setAction("cidadaos.cidade.data.UpdaterServiceManager");
startService(serviceIntent);
समस्या यह है कि कुछ भी नहीं होता है। गतिविधि के अंत में उपरोक्त कोड ब्लॉक कहा जाता है onCreate
। मैंने पहले ही डिबग कर लिया और कोई अपवाद नहीं फेंका गया।
कोई उपाय?
<service android:name="your.package.name.here.ServiceClass" />
एप्लिकेशन टैग के उपयोग से Android मेनिफेस्ट में सेवा पंजीकृत की है ।
START_STICKY
सेवा को फिर से शुरू करेंगे, लेकिन उसके बाद केवल ऑनक्रीट कहा जाता है और टाइमर संस्करण को फिर से शुरू नहीं किया जाएगा। इसे ठीक करने के लिए आपSTART_REDELIVER_INTENT
अलार्म सेवा या एपीआई 21 जॉब शेड्यूलर के साथ खेल सकते हैं ।