我正在研究需要永久性互聯網連接的應用程序。如果沒有互聯網連接,我想讓用戶註銷應用程序(轉到登錄屏幕)。 我有一個網絡接收器類,檢測網絡連接。我希望這個類要麼終止堆棧頂部的活動,要麼開始一個新的登錄活動並刪除整個歷史堆棧。正在完成其他課程的活動
問題是我無法從我的接收器類中完成前臺活動,並且沒有辦法知道當網絡出現故障時用戶處於哪個活動狀態。如果我從這個類開始一個新的登錄活動,當用戶按下「返回」時,他將被帶回應用程序(如果他重新連接到網絡),但該應用程序未登錄並崩潰。
嘗試使用myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK || FLAG_ACTIVITY_CLEAR_TOP);
從我的NetworkStateReceiver類開始新的登錄活動時。但它不起作用,根據我的理解,這創建了一項新任務,其中唯一的活動就是我開始(登錄)的活動,但其他所有活動的舊任務仍保持不變。
所以我需要:
- 或者一個方法來從一個類
完成一個前臺活動 - 或者一個方式開始從一類新的活動和排空活動堆棧
下面是它的價值的接收器代碼:
public class NetworkStateReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent) {
// super.onReceive(context, intent);
Log.d("app","Network connectivity change");
if(intent.getExtras()!=null) {
Login.apiKey = null;
NetworkInfo ni=(NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);
if(ni!=null && ni.getState()==NetworkInfo.State.CONNECTED) {
Log.i("app","Network "+ni.getTypeName()+" connected");
}
}
if(intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE) && !Login.loginActive) {
Log.d("app","There's no network connectivity");
Toast.makeText(context, "No internet connection. Logging out", Toast.LENGTH_LONG).show();
//logout
Receiver.engine(context).halt();
Receiver.mSipdroidEngine = null;
Receiver.reRegister(0);
new Thread(ChatList.runnable).interrupt();
ChatList.buddyList.clear();
Login.apiKey = null;
Log.i("Logout", "Logged out!");
Login.loggedOut = true;
Intent myIntent = new Intent(context, Login.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
// myIntent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
context.startActivity(myIntent);
}
}
}
SOLUTION:從所有活動 傳遞參照接收機
//random user_activity
@Override
protected void onPause() {
super.onPause();
NetworkStateReceiver.curActivity = null;
}
@Override
protected void onResume() {
super.onResume();
NetworkStateReceiver.curActivity = user_activity.this; //edited : getParent() doesn't always work
}
和在網絡接收機中onReceive()
:
if(curActivity != null)
{
curActivity.finish();
}
你先生,很棒!我將當前活動的參考文件傳遞給接收方,並且工作正常!謝謝! – Sebek 2013-02-15 14:52:36