4

Nougat 아래의 API에서 CONNECTIVITY_CHANGES에 가입 한 매니페스트에 리시버를 선언하면됩니다. 이를 통해 네트워크 연결 변경 여부를 청취 할 수 있었으며, 연결이 켜져 있는지 여부에 관계없이 앱이 실행되지 않아도 작업을 수행 할 수있었습니다.앱이 실행되지 않아도 누우 트에서 네트워크 연결 손실을 어떻게 감지합니까?

놀가 (Nougat)에서는 가능하지 않습니다. Nougat의 JobScheduler는 네트워크 연결이있을 경우 백그라운드에서 특정 작업을 수행하는 데 사용할 수 있지만 네트워크 연결 손실을 수신하는 옵션은없는 것 같습니다.

즉, 휴대 전화가 모든 연결 (Wi-Fi, LTE 등)을 잃어 버렸을 때들을 수 있고 백그라운드에서 무언가를 할 수 있기를 바랍니다. 누가가 누갓에게 가능한가요?

+0

당신이 봤어 사용할 수 있습니까? –

+0

휴대 전화의 변경 사항은 매우 자주 발생합니다. 사용자가 휴대 전화를 매우 바쁘게 사용할 수 없게 될 수도 있습니다. – apelsoczi

+0

@ JaredRummler NETWORK_TYPE_NONE은 자신이 생각하는대로하지 않습니다. 기본적으로 의미가 아니라 네트워크 연결의 종류에 관계없이이 작업을 실행하는 것입니다. 네트워크가없는 경우에만이 작업을 수행하십시오. –

답변

0

당신은`setRequiredNetworkType (JobInfo.NETWORK_TYPE_ANY)`와``setRequiredNetworkType (JobInfo.NETWORK_TYPE_NONE)`와 JobInfo` 다른를 만드는 NetworkChangeReceiver

public class NetworkChangeReceiver extends BroadcastReceiver { 

private static final String LOG_TAG = "NetworkChangeReceiver"; 
private boolean isConnected = false; 
Context mContext; 

@Override 
public void onReceive(Context context, Intent intent) { 
    Log.v(LOG_TAG, "Receieved notification about network status"); 
    isNetworkAvailable(context); 
    mContext=context; 

} 

public boolean isNetworkAvailable(Context context) { 
    ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (connectivity != null) { 
     NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
     if (info != null) { 
      for (int i = 0; i < info.length; i++) { 
       if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
        if (!isConnected) { 
         Log.v(LOG_TAG, "Now you are connected to Internet!"); 
         Toast.makeText(context, R.string.internet_available, Toast.LENGTH_SHORT).show(); 

         isConnected = true; 


        } 
        return true; 
       } 
      } 
     } 
    } 
    Log.v(LOG_TAG, "You are not connected to Internet!"); 
    Toast.makeText(context, R.string.internet_not_available, Toast.LENGTH_SHORT).show(); 




    isConnected = false; 
    return false; 
} 
+0

nougat + –

+1

@ f.khantsis에서 수동으로 등록하십시오.이 작업을 백그라운드에서 수행해야하는 경우 활동을 열지 않은 상태에서이 작업을 수행 할 수 있습니까? –

+0

@the_gesslar는 응용 프로그램 클래스에서 사용합니다. –