如何在连接互联网时运行服务?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在连接互联网时运行服务?相关的知识,希望对你有一定的参考价值。

您好我是android的新手,我几乎完成了我的应用程序。但我现在坚持这个问题。我想运行一项仅在互联网连接或断开连接时才能运行的服务。我使用了Brodcast接收器,并在应用程序的活动中注册了brodcast。但是,当我尝试app被杀时它不起作用,接收器被调用,但它显示没有连接互联网。

广播接收器:

public class ImageDownloadReceiver extends BroadcastReceiver {

public static boolean isConnected(Context context){
    ConnectivityManager
            cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    return activeNetwork != null
            && activeNetwork.isConnectedOrConnecting();
}


@Override
public void onReceive(Context context, Intent intent) {
    Log.i("Info", "onReceive in ImageDownloadReceiver get called ... ");

    if(isConnected(context)){
        Log.i("Info", "Internet connected !!!...Service starts ... ");
        Intent myService = new Intent(context, ImagesDownloadService.class);
        context.startService(myService);
    }else{
        Log.i("Info", "Internet disconnected !!!...Service stops ... ");
        Intent myService = new Intent(context, ImagesDownloadService.class);
        context.stopService(myService);
    }
}
}

表现:

    <receiver
        android:name=".receiver.ImageDownloadReceiver"
        android:enabled="true"
        android:exported="true"
        android:label="RestartServiceWhenStopped">
        <intent-filter>
            <action android:name="com.example.app.RestartImageDownloadService"/>
            <action
                android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
            <action android:name="android.net.wifi.STATE_CHANGE" />
        </intent-filter>
    </receiver>
答案

我建议您更喜欢使用JobScheduler来处理您的案例。 JobScheduler为您提供服务和许多条件来启动服务。当然,这些条件包括互联网连接。你去:https://developer.android.com/reference/android/app/job/JobScheduler.html

以上是关于如何在连接互联网时运行服务?的主要内容,如果未能解决你的问题,请参考以下文章

如果没有可用的互联网,如何将 ContentView 设置为另一个片段,如果连接可用,如何恢复片段

如何在Android中创建服务,以便在用户与Internet连接时启动

SocketTimeoutException 使应用程序崩溃

在执行 HTTPClient 之前如何检查互联网连接 [重复]

更改选项卡时避免/防止片段刷新

如何在运行时加载的 jsp 中包含 html 片段?