Android仅在Wi-Fi可用时运行服务

时间:2016-10-14 16:42:26

标签: android android-studio service android-service android-networking

我正在使用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;
    }
}

但我无法在我的服务中使用它(因为我的服务不在主线程中运行) 任何帮助将不胜感激。

0 个答案:

没有答案