我在Eclipse下编写Android代码,我将在其中处理两项服务:MyService1
和MyService2
。第一个是由{MainActivity'中的AlaramManager
触发的。如下:
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, NumSec);
long time = cal.getTimeInMillis();
Intent i = new Intent(getApplication(), MyService1.class);
PendingIntent pintent = PendingIntent.getBroadcast(getApplication(), 0, i, 0);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, time, AlarmManager.INTERVAL_DAY, pintent);
这没关系,而且运作良好。
现在,我将以同样的方式使用MyService2
再次从MyService1
开始第二项服务AlarmManager
。但是我的代码中存在错误:
Intent myIntent = new Intent(MyService1.this, MyService2.class);
我知道函数Intent
有两个参数,第一个是Context
类型。我尝试了一些其他的方法,但没有它们工作!例如:
Intent myIntent = new Intent(getBaseContext(), MyService2.class);
Intent myIntent = new Intent(getApplication(), MyService2.class);
有什么建议吗?! 提前谢谢。
将帖子 我的第一项服务如下:
public class MyService1 extends BroadcastReceiver {
@Override
public void onReceive(Context con, Intent arg1) {
AlarmManager am = (AlarmManager) con.getSystemService(Service.ALARM_SERVICE);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 10);
long time = cal.getTimeInMillis();
Intent i = new Intent(con, MyUpService.class);
PendingIntent pint = PendingIntent.getBroadcast(con, 0, i, 0);
am.set(AlarmManager.RTC_WAKEUP, time, pint);
}
}
答案 0 :(得分:0)
您应该使用PendingIntent.getService来启动服务,而不是PendingIntent.getBroadcast。 http://developer.android.com/reference/android/app/PendingIntent.html#getService(android.content.Context,int,android.content.Intent,int)
答案 1 :(得分:0)
有Context Object
public void onReceive(Context con, Intent arg1) {
}
所以你可以使用这个
Intent myIntent = new Intent(con, MyService1.class);
Intent myIntent1 = new Intent(con, MyService2.class);