zoukankan      html  css  js  c++  java
  • 【Android基础知识】【android多线程handler】

    handler机制不需要明白太多,我认为可以参照例子来实现,每次使用的时候就用一下例子。

    既有线程,又有mhandler对接收到的消息的处理。

    package com.hengtiansoft.sportnow.news.ui;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.text.format.DateUtils;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.Toast;
    
    import com.hengtiansoft.sportnow.R;
    import com.handmark.pulltorefresh.library.PullToRefreshBase;
    import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
    import com.handmark.pulltorefresh.library.PullToRefreshListView;
    import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
    import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
    import com.handmark.pulltorefresh.library.PullToRefreshListView;
    import com.hengtiansoft.sportnow.news.adapter.MainListViewAdapter;
    import com.hengtiansoft.sportnow.news.app.NewsAppContext;
    import com.hengtiansoft.sportnow.news.app.NewsAppException;
    import com.hengtiansoft.sportnow.news.bean.News;
    import com.hengtiansoft.sportnow.news.bean.NewsList;
    import com.hengtiansoft.sportnow.news.common.UIHelper;
    
    public class NewsActivity extends Activity {
        private PullToRefreshListView listview;
        private List<News> newsList;
        private NewsAppContext appContext;// 全局Context
        private MainListViewAdapter listViewAdapter;
        private ProgressDialog selectorDialog;
        private Button bt_news, bt_forum, bt_cartype, bt_favour, bt_more;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_news);
            appContext = (NewsAppContext) getApplication();
            // 网络连接判断
            if (!appContext.isNetworkConnected())
                UIHelper.ToastMessage(this, R.string.network_not_connected);
            initData();
        }
    
        
        //变量
        Handler mHandler = new Handler() {
            public void handleMessage(Message msg) {
                selectorDialog.cancel();
                if (msg.what == 1) {
                    newsList = (List<News>) msg.obj;
                    listViewAdapter = new MainListViewAdapter(NewsActivity.this,
                            newsList);
                    listview.setAdapter(listViewAdapter);
                } else if (msg.what == -1) {
                    UIHelper.ToastMessage(NewsActivity.this, "没有数据");
                } else if (msg.what == -2) {
                    UIHelper.ToastMessage(NewsActivity.this,
                            R.string.xml_parser_failed);
                }
            }
        };
    
        private void initData() {
    
            selectorDialog.show();
            new Thread() {
                public void run() {
                    Message msg = new Message();
                    boolean isRefresh = false;
                    try {
                        NewsList list = appContext.getNewsList();
                        if (list.getNewsCount() > 0) {
                            msg.what = 1;
                            msg.obj = list.getNewslist();
                            appContext.saveObject(list, "newslist_");
                        } else {
                            msg.what = -1;
                        }
                    } catch (NewsAppException e) {
                        e.printStackTrace();
                        msg.what = -2;
                        msg.obj = e;
                    }
                    mHandler.sendMessage(msg);
                }
            }.start();
        }
    }
  • 相关阅读:
    AUTOSAR-文档中所使用的UML文件
    开心一下-实现基于Java一个中文编程语言
    HDU 1026 Ignatius and the Princess I
    HDU 2553 (状压) N皇后问题 (2)
    UVa 11825 (状压DP) Hackers' Crackdown
    UVa 10891 (博弈+DP) Game of Sum
    LA 2965 Jurassic Remains
    HDU 2126 (背包方法数) Buy the souvenirs
    POJ 3984 迷宫问题
    POJ 3287 (基础BFS) Catch That Cow
  • 原文地址:https://www.cnblogs.com/hikigaya-yukino/p/4176794.html
Copyright © 2011-2022 走看看