1. 程式人生 > >用Android-Studio的IntentService模板快速實現業務需求(實戰)

用Android-Studio的IntentService模板快速實現業務需求(實戰)

package com.czz.manager.service;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.czz.manager.R;
import com.czz.manager.bean.NewsInfo;
import com.czz.manager.bean.WeatherInfo;

import java.util.ArrayList;

public class TestActivity extends AppCompatActivity {

    //TODO :③獲得結果之後需要用Broadcast將結果傳送給Activity以更新UI檢視
    private static final String NEWS_RESULT = "com.czz.manager.service.RESULT.NEWS";
    private static final String WEATHER_RESULT = "com.czz.manager.service.RESULT.WEATHER";
    //TODO :④傳送廣播,需要傳入的一些引數
    private static final String EXTRA_PARAM3 = "com.czz.manager.service.extra.PARAM3";
    private static final String EXTRA_PARAM4 = "com.czz.manager.service.extra.PARAM4";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        //註冊廣播,以接收Service通過廣播發送過來的資料
        registerReceiver();
        //啟動服務
        TestIntentService.startActionNEWS(this, null, null);
        TestIntentService.startActionWEATHER(this, null, null);
    }

    private void registerReceiver() {
        IntentFilter filter = new IntentFilter();
        //區分多種廣播
        filter.addAction(NEWS_RESULT);
        filter.addAction(WEATHER_RESULT);
        registerReceiver(receiver, filter);
    }

    private BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(NEWS_RESULT)) {
                Log.i("mylog", "NEWS廣播接收器中...");
                ArrayList<NewsInfo> arrayList = intent.getParcelableArrayListExtra(EXTRA_PARAM3);
                //獲取到了資料,進行一些UI更新...
            } else if (intent.getAction().equals(WEATHER_RESULT)) {
                Log.i("mylog", "WEATHER廣播接收器中...");
                ArrayList<WeatherInfo> arrayList = intent.getParcelableArrayListExtra(EXTRA_PARAM4);
                //獲取到了資料,進行一些UI更新...
            }
        }
    };

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(receiver);
    }
}

(3)JavaBean:
此處給出NewsInfo類,Weather類省略。需要實現Parcelable介面
package com.czz.manager.bean;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * Created by XiuChou on 2016/8/19
 */

public class NewsInfo implements Parcelable {

    public int describeContents() {
        return 0;
    }

    public void writeToParcel(Parcel out, int flags) {
        out.writeString(article_url);
        out.writeString(behot_time);
        out.writeInt(bury_count);
        out.writeInt(digg_count);
        out.writeInt(repin_count);
        out.writeInt(create_time);
        out.writeInt(publish_time);
        out.writeString(source);
        out.writeString(title);
    }

    public static final Parcelable.Creator<NewsInfo> CREATOR = new Parcelable.Creator<NewsInfo>() {
        public NewsInfo createFromParcel(Parcel in) {
            return new NewsInfo(in);
        }

        public NewsInfo[] newArray(int size) {
            return new NewsInfo[size];
        }
    };

    private NewsInfo(Parcel in) {
        article_url = in.readString();
        behot_time = in.readString();
        bury_count = in.readInt();
        digg_count = in.readInt();
        repin_count = in.readInt();
        create_time = in.readInt();

        publish_time = in.readInt();

        source = in.readString();
        title = in.readString();

    }

    private String article_url;//Http,Url
    private String behot_time;//時間

    private int bury_count;//踩數
    private int digg_count;//點贊數
    private int repin_count;//收藏數

    private int create_time;//建立時間

    private String group_id;
    private int publish_time;//釋出時間

    private String source;//來源
    private String title;//新聞標題

    public int getCreate_time() {
        return create_time;
    }

    public int getDigg_count() {
        return digg_count;
    }

    public String getGroup_id() {
        return group_id;
    }

    public int getPublish_time() {
        return publish_time;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getSource() {
        return source;
    }

    public void setSource(String source) {
        this.source = source;
    }

    public int getRepin_count() {
        return repin_count;
    }

    public void setRepin_count(int repin_count) {
        this.repin_count = repin_count;
    }

    public void setPublish_time(int publish_time) {
        this.publish_time = publish_time;
    }

    public void setGroup_id(String group_id) {
        this.group_id = group_id;
    }

    public void setDigg_count(int digg_count) {
        this.digg_count = digg_count;
    }

    public void setCreate_time(int create_time) {
        this.create_time = create_time;
    }

    public int getBury_count() {
        return bury_count;
    }

    public void setBury_count(int bury_count) {
        this.bury_count = bury_count;
    }

    public String getArticle_url() {
        return article_url;
    }

    public void setArticle_url(String article_url) {
        this.article_url = article_url;
    }

    public String getBehot_time() {
        return behot_time;
    }

    public void setBehot_time(String behot_time) {
        this.behot_time = behot_time;
    }

    @Override
    public String toString() {
        return "NewsInfo{" +
                "article_url='" + article_url + '\'' +
                ", behot_time='" + behot_time + '\'' +
                ", bury_count=" + bury_count +
                ", digg_count=" + digg_count +
                ", repin_count=" + repin_count +
                ", create_time=" + create_time +
                ", group_id='" + group_id + '\'' +
                ", publish_time=" + publish_time +
                ", source='" + source + '\'' +
                ", title='" + title + '\'' +
                '}';
    }
}