package com.minggo.pluto.activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.DrawableRes; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; import android.view.inputmethod.InputMethodManager; import android.widget.Toast; import com.minggo.pluto.common.AppManager; import com.minggo.pluto.common.CommonAsyncTask; import com.minggo.pluto.dialog.PlutoDialog; import com.minggo.pluto.util.LogUtils; import com.minggo.pluto.util.NetworkUtils; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Timer; import static com.minggo.pluto.logic.LogicManager.LogicManagerType.*; /** * Activity的基类添加到应用管理堆栈和异步任务统一管理取消 添加handle处理统一使用[2015-1-27] * * @author minggo * @time 2014-12-2下午3:15:02 */ public abstract class PlutoActivity extends AppCompatActivity implements IActivity { protected Handler mUiHandler = new UiHandler(this); private final String pageName = getClass().getSimpleName(); private Toast toast = null; /** 定时器 */ protected Timer timer; /** 定时器周期,一般为1秒一次,单位毫秒 */ protected int timerPeriod = 1000; protected PlutoDialog loadingDialog; private static class UiHandler extends Handler { private final WeakReference<PlutoActivity> mActivityReference; public UiHandler(PlutoActivity activity) { mActivityReference = new WeakReference<PlutoActivity>(activity); } public void handleMessage(Message msg) { super.handleMessage(msg); if (mActivityReference.get() != null) { mActivityReference.get().handleUiMessage(msg); } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 添加Activity到堆栈 AppManager.getAppManager().addActivity(this); showHomeAsUp(); initLoadingDialog(); } private void initLoadingDialog(){ loadingDialog = new PlutoDialog(this,PlutoDialog.LOADING); } @Override protected void onDestroy() { super.onDestroy(); stopTimer(); // 结束Activity&从堆栈中移除 AppManager.getAppManager().finishActivity(this); } @Override protected void onResume() { super.onResume(); LogUtils.umengOnResume(pageName); } @Override protected void onPause() { super.onPause(); LogUtils.umengOnPause(pageName); } /** * 取消指定异步任务 * * @param asyncTasks */ protected void cancelAsyncTask(CommonAsyncTask<?, ?, ?>... asyncTasks) { for (CommonAsyncTask<?, ?, ?> asyncTask : asyncTasks) { if (asyncTask != null && !asyncTask.isCancelled()) { asyncTask.cancel(true); } } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); } @Override public void setupActions(ArrayList<String> actions) { } @Override public void handleUiMessage(Message msg) { } protected void sendUiMessageDelayed(Message msg, long delayMillis) { } /** * 发送UI更新操作 * * @param what */ protected void sendEmptyUiMessage(int what) { mUiHandler.sendEmptyMessage(what); } protected void sendEmptyUiMessageDelayed(int what, long delayMillis) { mUiHandler.sendEmptyMessageDelayed(what, delayMillis); } protected void removeUiMessages(int what) { mUiHandler.removeMessages(what); } protected Message obtainUiMessage() { return mUiHandler.obtainMessage(); } /** * 显示{@link Toast}通知 * * @param strResId 字符串资源id */ public void showToast(final int strResId) { String text = getString(strResId); showToast(text); } /** * 显示{@link Toast}通知 * * @param showText 字符串资源id */ public void showToast(final String showText) { runOnUiThread(new Runnable() { @Override public void run() { if (toast == null) { toast = Toast.makeText(PlutoActivity.this, showText, Toast.LENGTH_SHORT); } else { toast.setText(showText); toast.setDuration(Toast.LENGTH_SHORT); } toast.show(); } }); } /** * 隐藏软键盘 */ protected void hideSoftInput(Context context) { InputMethodManager manager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); // manager.toggleSoftInput(InputMethodManager.HIDE_NOT_ALWAYS, 0); if (getCurrentFocus() != null) { manager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } } /** * 显示软键盘 */ protected void showSoftInput() { InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); manager.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); } /** * 检测网络是否可用 */ public boolean isNetworkConnected() { return NetworkUtils.isNetworkConnected(this); } public Handler getmUiHandler() { return mUiHandler; } @Override public void handleBroadcast(Context context, Intent intent) { } /** ActionBar显示返回图标 */ protected void showHomeAsUp() { ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); } } /** ActionBar隐藏返回图标 */ protected void hideHomeAsUp() { ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(false); } } /** 设置ActionBar左上角图标 */ protected void setHomeAsUpIndicator(@DrawableRes int resId) { ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setHomeAsUpIndicator(resId); } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: homeMenuOnClick(); break; } return super.onOptionsItemSelected(item); } /** * ActionBar返回图标点击事件,默认实现为onBackPressed(); */ protected void homeMenuOnClick() { onBackPressed(); } /** * 停止定时器 */ public void stopTimer(){ if (timer != null) { timer.cancel(); timer = null; } } }