你好,大家好我只是一個簡單的問題是如何運行的連續後臺的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
收聽連接廣播事件,並從您的廣播接收器啓動一項服務,做什麼你需要做的內部服務,應該是這樣。 –