【问题标题】:Android : run in background whenever internet connectedAndroid:只要连接了互联网,就会在后台运行
【发布时间】:2016-02-12 05:53:06
【问题描述】:

大家好,我有一个简单的问题,如何在后台连续运行android中的一些代码块,

情况是检查互联网连接与否,然后将文件上传到服务器上。(这将在后台连续运行。)

我得到了类似于 BroadcastReceiver 的东西,但我认为它只是为了检查互联网连接。

如果有人提供一段代码并让我理解,这将有很大帮助......

谢谢!!!!!!

【问题讨论】:

标签: android


【解决方案1】:

我给你举个例子

您可以通过此轻松检查您的连接

创建 NetworkUtils 类:

public class NetworkUtil {
    public static final int NOT_CONNECTED = 0;
    public static final int WIFI = 1;
    public static final int MOBILE = 2;
    public static int getConnectionStatus(Context context){
        ConnectivityManager connectivityManager =
                (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

        if(networkInfo != null){
            if(networkInfo.getType() == ConnectivityManager.TYPE_WIFI){
                return WIFI;
            }
            if(networkInfo.getType() == ConnectivityManager.TYPE_MOBILE){
                return MOBILE;
            }
        }
        return NOT_CONNECTED;
    }
}

创建 NetworkConnectivityCheck 类:

public class NetworkConnectivityCheck {
    public boolean internetAvailable = false;
    private BroadcastReceiver networkChangeReceiver;

    NetworkConnectivityCheck(){

        this.networkChangeReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                int networkState = NetworkUtil.getConnectionStatus(context);
                if(networkState == NetworkUtil.NOT_CONNECTED){
                    internetAvailable = false;
                    MainActivity.tvStatus.setText("OFFLINE");

                } else if(networkState == NetworkUtil.MOBILE){
                    internetAvailable = true;
                    MainActivity.tvStatus.setText("ONLINE"); // you do something here.
                } else if(networkState == NetworkUtil.WIFI){
                    internetAvailable = true;
                    MainActivity.tvStatus.setText("ONLINE"); // you do something here
                }
            }
        };
    }



    public void register(Context context){
        context.registerReceiver(networkChangeReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    }
    public void unregister(Context context){
        context.unregisterReceiver(networkChangeReceiver);
    }
}

主要活动:

public class MainActivity extends AppCompatActivity {
    private NetworkConnectivityCheck networkConnectivityCheck;

    public static TextView tvStatus;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvStatus = (TextView)findViewById(R.id.tvStatus);

        networkConnectivityCheck = new NetworkConnectivityCheck();
        networkConnectivityCheck.register(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        networkConnectivityCheck.register(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        networkConnectivityCheck.unregister(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        networkConnectivityCheck.unregister(this);
    }
}

【讨论】:

  • 非常感谢 Huy Nguyen 它对我帮助很大,你能否再给我一个答案,如何让应用程序在后台运行,如 whatsapp 或 messanger ....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多