我正在使用Android studio编写应用程序。我的应用程序需要一个服务,每3个小时下载一个文件,如果有新的条目,则会询问。 所以,我已经实现了我的服务:
public class MyService extends IntentService {
public MyService() {
super("My Service");
}
@Override
protected void onHandleIntent(Intent workIntent) {
//do something
}
}
在我的主要活动中,我开始了它:
startService(new Intent(this, MyService.class));
Calendar cal = Calendar.getInstance();
Intent intent = new Intent(this, MyService.class);
PendingIntent pintent = PendingIntent
.getService(this, 0, intent, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// Start service every 3 hours
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
10800*1000, pintent);
正如我所说,我的服务下载了一个文件,但我不想浪费用户的移动数据,那么只有在Wi-Fi(无限数据)可用的情况下,如何才能运行我的服务? 我还创建了检查网络状态的类:
public class ConnectionDetector {
Context context;
public ConnectionDetector(Context context) {
this.context = context;
}
public boolean isConnected() {
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Service.CONNECTIVITY_SERVICE);
if ( connectivity != null) {
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (info != null) {
if (info.getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
return false;
}
}
但我无法在我的服务中使用它(因为我的服务不在主线程中运行) 任何帮助将不胜感激。