package com.cundong.izhihu.activity; import android.annotation.SuppressLint; import android.content.Intent; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.text.TextUtils; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.cundong.izhihu.Constants; import com.cundong.izhihu.R; import com.cundong.izhihu.fragment.NewsListFragment; import com.cundong.izhihu.task.MyAsyncTask; import com.cundong.izhihu.task.OfflineDownloadTask; import com.cundong.izhihu.task.ResponseListener; import com.cundong.izhihu.util.DateUtils; import com.cundong.izhihu.util.NetWorkHelper; import com.cundong.izhihu.util.PreferencesUtils; import de.keyboardsurfer.android.widget.crouton.Crouton; import de.keyboardsurfer.android.widget.crouton.Style; /** * 类说明: 主页面Activity * * @date 2014-9-20 * @version 1.0 */ public class MainActivity extends BaseActivity implements ResponseListener { private static final int REQUESTCODE_SETTING = 8009; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Fragment newFragment = getFragment(); if (newFragment != null) { getSupportFragmentManager().beginTransaction().replace(android.R.id.content, newFragment).commit(); } // WIFI下自动开启离线 if (NetWorkHelper.isWifi(this) && !PreferencesUtils.getBoolean(mInstance, DateUtils.getCurrentDate(), false)) { startOfflineDownload(); } } @Override protected Fragment getFragment() { return new NewsListFragment(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getSupportMenuInflater().inflate(R.menu.main, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_download: startOfflineDownload(); return true; case R.id.action_favorite: startActivity(new Intent(this, FavoriteActivity.class)); return true; case R.id.action_setting: if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { startActivityForResult(new Intent(this, PrefsActivity.class), REQUESTCODE_SETTING); } else { startActivityForResult(new Intent(this, OtherPrefsActivity.class), REQUESTCODE_SETTING); } return true; } return super.onOptionsItemSelected(item); } @Override public void onPreExecute() { Crouton.makeText(this, R.string.offline_download_doing, Style.INFO).show(); } @Override public void onPostExecute(String content) { if (!TextUtils.isEmpty(content) && content.equals("success")) { PreferencesUtils.putBoolean(mInstance, DateUtils.getCurrentDate(), true); Crouton.makeText(this, R.string.offline_download_done, Style.INFO) .show(); } else { Crouton.makeText(this, R.string.offline_download_fail, Style.ALERT) .show(); } } @Override public void onFail(final Exception e) { if (!isFinishing()) { Crouton.makeText(this, R.string.offline_download_fail, Style.ALERT).show(); } } @Override public void onProgressUpdate(String value) { } @SuppressLint("NewApi") @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUESTCODE_SETTING) { //Activity关闭后,如果改变了主题,则需要recreate this Activity SharedPreferences mPerferences = PreferenceManager.getDefaultSharedPreferences(this); if (isDarkTheme != mPerferences.getBoolean("dark_theme?", false)) { recreateActivity(); } } } @Override protected void onDestroy() { Crouton.clearCroutonsForActivity(this); super.onDestroy(); } /** * 开始离线下载 * */ private void startOfflineDownload() { String getLatestUrl = Constants.Url.URL_LATEST; String todayUrl = Constants.Url.URLDEFORE + DateUtils.getCurrentDate(DateUtils.YYYYMMDD); String yesterdayUrl = Constants.Url.URLDEFORE + DateUtils.getYesterdayDate(DateUtils.YYYYMMDD); String theDayBeforeYesterdayUrl = Constants.Url.URLDEFORE + DateUtils.getTheDayBeforeYesterday(DateUtils.YYYYMMDD); String[] urls = { getLatestUrl, todayUrl, yesterdayUrl, theDayBeforeYesterdayUrl }; for (String url : urls) { ResponseListener listener = url.equals(getLatestUrl) ? this : null; new OfflineDownloadTask(this, listener).executeOnExecutor(MyAsyncTask.DOWNLOAD_THREAD_POOL_EXECUTOR, url); } } }