How to Reuse getExternalStorageState?

前端 未结 2 1234
情话喂你
情话喂你 2020-12-12 02:54

How can this be written in its own class to be used over and over again? And where the comment line \"//Loads the List\" is, I need to be able to change that at runtime. <

相关标签:
2条回答
  • 2020-12-12 03:14

    I would do this:

    public static boolean performExternalStorageOperation(Runnable doIfMounted) {
        if (android.os.Environment.getExternalStorageState().equals(
                android.os.Environment.MEDIA_MOUNTED)) {
    
            orderASC();// Loads the list
            if(doIfMounted != null) {
                doIfMounted.run();
            }
            return true;
        } else if (android.os.Environment.getExternalStorageState().equals(
                android.os.Environment.MEDIA_UNMOUNTED)) {
            Alerts.sdCardMissing(this);
        }
        return false;
    }
    

    You can replace the Runnable with any kind of generic Listener (I use OnClickListeners a lot for actions that aren't necessarily clicks) or write your own callback class with a common method to call, but that would be my general approach.

    0 讨论(0)
  • 2020-12-12 03:20

    This seems a little trivial for it's own class, but one approach is:

    class StorageStateChecker  {
      static void storageState(XXX param, Listener l) {
        if (android.os.Environment.getExternalStorageState().equals(
                android.os.Environment.MEDIA_MOUNTED)) {
            l.orderASC();// Loads the list
    
        } else if (android.os.Environment.getExternalStorageState().equals(
                android.os.Environment.MEDIA_UNMOUNTED)) {
            Alerts.sdCardMissing(this);
        }
      }
    
      public interface Listener {
        public void orderASC();
      }
    }
    

    Note that XXX param needs replacing with whatever this represents in the call Alerts.sdCardMissing(this); as Alerts isn't an Android SDK class, I could only guess.

    To use the code, just call StorageStateChecker(param /* was 'this' */, callbackClass /* implements StorageStateChecker.Listener */);

    0 讨论(0)
提交回复
热议问题