你好,大家好我只是一个简单的问题是如何运行的连续后台的Android代码的一些块,安卓:在后台运行,随时连接互联网
的情况是检查连接互联网或没有,因此它会上传服务器上的文件(这将在后台连续运行)。
我收到类似BroadcastReceiver的东西,但我认为它只能检查互联网连接。
这将有很大的帮助,如果有人给一个代码块,让我明白...
谢谢!!!!!
你好,大家好我只是一个简单的问题是如何运行的连续后台的Android代码的一些块,安卓:在后台运行,随时连接互联网
的情况是检查连接互联网或没有,因此它会上传服务器上的文件(这将在后台连续运行)。
我收到类似BroadcastReceiver的东西,但我认为它只能检查互联网连接。
这将有很大的帮助,如果有人给一个代码块,让我明白...
谢谢!!!!!
我给你举个例子
可以轻松地检查这个
您的连接创建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或信使的背景.... – Manish
嗨Manish! 因为这是一个复杂的应用程序,所以我不能给你一个清晰的例子。 要做这样的应用程序,您应该了解更多关于BroadcastReceiver,Service,Notification,以及一些后端服务,例如推送通知的“Parse”。 学习高级编程的有效方法是解码从Playstore下载的APK文件。您可以使用apkpure.com从商店下载APK文件。然后使用dex2jar + jdgui解码该文件。 我认为这对你绝对有帮助。 :) – alway5dotcom
谢谢Huy Nguyen,你对我做了很大的帮助! – Manish
的可能重复[我怎样才能运行Android上的后台线程的代码?](http://stackoverflow.com/questions/15472383/how-can-i-run-代码在Android上的后台线程) – Rakesh
收听连接广播事件,并从您的广播接收器启动一项服务,做什么你需要做的内部服务,应该是这样。 –