Activity初始化数据initData()时的多线程同步处理

package com.example.wjfragmenttest;
import java.util.Iterator;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;

public class MainActivity extends Activity {
private InitDataClass initData;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);
    initView();
    //使用内部类来构造初始化数据对象,使用对象来同步初始化数据防止onResume()和onCreate()中initData()的并发
    //初始化数据封装对象
    initData = new InitDataClass();
    initData();//初始数据子线程
    initEvent();

}

//用于处理back按键的返回数据
@Override
protected void onResume() {
    initData();
    super.onResume();
}

private void initData() {
    //子线程获取数据
    new Thread(){
        public void run(){
            //通过对象来初始化数据
            initData.initData();
        };
    }.start();
}
private class InitDataClass{
    //完成同步操作加synchronized
    public synchronized void initData(){
        //发送加载数据进度的消息
        handler.obtainMessage(LOADING).sendToTargget();
        //获取所有运行中的进程数据
        List<TaskBean> allTaskDatas = TaskManagerEngine.getAllRunningTaskInfos(getApplicationContext());
        availMem = TaskManagerEngine.getAvailMemSize(getApplicationContext());
        totalMem = TaskManagerEngine.getTotalMemSize(getApplicationContext());
        SystemClock.sleep(500);
        sysTasks.clear();
        userTasks.clear();
        //分发数据
        for (TaskBean taskBean:allTaskDatas) {
            if(taskBean.isSystem()){
                sysTasks.add(taskBean);//系统进程
            }else{
                userTask.add(taskBean);//用户进程
            }
        }
        System.out.print(allTaskSize()+":"+sysTask.size()+userTask.size());
        //加载数据完成
        handler.obtainMessage(FINISH).sendToTarget();
    }
}

}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值