2

我有一個應用程序,它從BroadcastReceiver接收從Web(json)獲取新數據,當我的應用程序在獲取時運行時;一切運行良好,當應用程序關閉它崩潰「你的應用程序停止工作」。即使以下很好檢查我的應用程序是否在前臺不起作用。 我想要它,所以如果應用程序關閉,沒有運行,調用意圖打開應用程序,它不會崩潰,所以如何檢查應用程序是否關閉?如何檢測應用程序是否關閉

我的代碼;

public class UpdateReceiver extends BroadcastReceiver { 

private static long alarmTime = 0; 

@Override 
public void onReceive(Context context, Intent intent) { 



    if (isAppForground(context)){ 
     Toast.makeText(context, "APP IN FOREGROUND", Toast.LENGTH_LONG).show(); 
    } else { 
     Intent intentActivity = new Intent(context, MainActivity.class); 
     intentActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(intentActivity); 
     Toast.makeText(context, "APP NOT RUNNING", Toast.LENGTH_LONG).show(); 
    } 

    //set new alarm for next tuesday 
    UpcomingFragment.getInstance().setAlarm(-1); 
    //updates the current json 
    UpcomingFragment.getInstance().update(); 


} 

public static long getAlermTimeInMillis(){ 
    return alarmTime; 
} 

public boolean isAppForground(Context mContext) { 

    ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); 
    List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1); 
    if (!tasks.isEmpty()) { 
     ComponentName topActivity = tasks.get(0).topActivity; 
     if (!topActivity.getPackageName().equals(mContext.getPackageName())) { 
      return false; 
     } 
    } 

    return true; 
} 

}

+0

從設備中添加崩潰日誌 –

+0

不打印 – MadBoy

+0

也許有些時候我的Android工作室有問題? – MadBoy

回答

3

我有相同的問題,我被困在它。幸運的是,在第3天,我找到了一個可行的解決方案。

public void onTrimMemory(final int level) { 
    if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) { 
     //SCREEN IS NOT SHOWING 
} 

這個onTrimMemory方法是非常有用的。它應該被用於優化您的應用程序在內存中,但我們可以使用它來我們這樣的優勢也!

+0

哈哈感謝兄弟,但我把它作爲參數傳遞? – MadBoy

+0

好的,我把它標記爲我的朋友,那麼我在哪裏調用這個方法?在我的OnRecieve()?然後我在哪裏打電話給我的意圖? – MadBoy

+0

@MadBoy你不需要叫它!這是一個很酷的部分,它就像一個聽衆。只要用戶離開,它就會自動調用! –

相關問題