Android 使用服务';结果是广播接收机
这里的Android 使用服务';结果是广播接收机,android,service,broadcastreceiver,Android,Service,Broadcastreceiver,这里的服务代码从RSS提要获取一些项目。然后生成项目列表。方法getItems()公开了引入的内容 public class RssService extends Service { ThisBinder mBinder = new ThisBinder(); private List<Item> items; @Override public int onStartCommand(Intent intent, int flags, int start
服务
代码从RSS提要获取一些项目。然后生成项目列表。方法getItems()
公开了引入的内容
public class RssService extends Service {
ThisBinder mBinder = new ThisBinder();
private List<Item> items;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//Hid some code for brevity
Log.i("items", Arrays.deepToString(items.toArray()));
return Service.START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
List<Item> getItems(){
return items;
}
class ThisBinder extends Binder{
RssService getService() {
return RssService.this;
}
}}
我需要在这里使用RssService.getItems()
方法,以便生成通知。到目前为止,我还没能做到这一点。我似乎找不到获取该服务实例的正确方法
如何做到这一点?您不应该明确地构造服务(或活动,或广播接收器)。安卓系统在内部实现了这一点。顺便说一句,abt服务如何保存SharedReference密钥并从中读取?无法在服务中获取上下文实例。@twntee请详细说明如何使用android自己创建的服务?您可以在服务中获取上下文,即this关键字!欧欧欧
public class RssReciever extends BroadcastReceiver {
Long REPEAT_TIME = 15L * 60L * 1000L;
// Long REPEAT_TIME = 1000L;
RssService rssService;
IBinder binder;
private Context mContext;
@Override
public void onReceive(Context context, Intent intent) {
mContext = context;
AlarmManager service = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, StartServiceReceiver.class);
PendingIntent pending = PendingIntent.getBroadcast(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 30);
service.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), REPEAT_TIME, pending);
Toast.makeText(mContext, "Connected, total Items, " + rssService.getItems().size(), Toast.LENGTH_SHORT).show();
}
}