FragmentRunnable.java revision 376294bbb5ded471ad577fdb492875a837021d08
1376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein/* 2376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * Copyright (C) 2013 Google Inc. 3376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * Licensed to The Android Open Source Project. 4376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * 5376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * Licensed under the Apache License, Version 2.0 (the "License"); 6376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * you may not use this file except in compliance with the License. 7376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * You may obtain a copy of the License at 8376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * 9376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * http://www.apache.org/licenses/LICENSE-2.0 10376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * 11376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * Unless required by applicable law or agreed to in writing, software 12376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * distributed under the License is distributed on an "AS IS" BASIS, 13376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * See the License for the specific language governing permissions and 15376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * limitations under the License. 16376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein */ 17376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein 18376294bbb5ded471ad577fdb492875a837021d08Andrew Sappersteinpackage com.android.mail.ui; 19376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein 20376294bbb5ded471ad577fdb492875a837021d08Andrew Sappersteinimport android.app.Fragment; 21376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein 22376294bbb5ded471ad577fdb492875a837021d08Andrew Sappersteinimport com.android.mail.utils.LogTag; 23376294bbb5ded471ad577fdb492875a837021d08Andrew Sappersteinimport com.android.mail.utils.LogUtils; 24376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein 25376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein/** 26376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * Small Runnable-like wrapper that first checks that the Fragment is in a good state before 27376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein * doing any work. Ideal for use with a {@link android.os.Handler}. 28376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein */ 29376294bbb5ded471ad577fdb492875a837021d08Andrew Sappersteinpublic abstract class FragmentRunnable implements Runnable { 30376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein private static final String LOG_TAG = LogTag.getLogTag(); 31376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein 32376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein private final String mOpName; 33376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein private final Fragment mFragment; 34376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein 35376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein public FragmentRunnable(String opName, Fragment fragment) { 36376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein mOpName = opName; 37376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein mFragment = fragment; 38376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein } 39376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein 40376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein public abstract void go(); 41376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein 42376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein @Override 43376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein public void run() { 44376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein if (!mFragment.isAdded()) { 45376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein LogUtils.i(LOG_TAG, "Unable to run op='%s' b/c fragment is not attached: %s", 46376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein mOpName, mFragment); 47376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein return; 48376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein } 49376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein go(); 50376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein } 51376294bbb5ded471ad577fdb492875a837021d08Andrew Sapperstein}