android中出现Only the original thread that created a view hierarchy can touch its views.错误解决方案

/**
	 * kill the process onclick listener
	 * @param view
	 */
	public void killProcess(View view){
		int total = 0;
		long memorySize = 0;
		for (TaskInfo userTaskInfo : usertaskinfos) {
			if(userTaskInfo.isChecked()){
				manager.killBackgroundProcesses(userTaskInfo.getPackName());
				total ++;
				memorySize += userTaskInfo.getMemorySize();
			}
		}
		for (TaskInfo systemTaskInfo : systemtaskinfos) {
			if(systemTaskInfo.isChecked()){
				manager.killBackgroundProcesses(systemTaskInfo.getPackName());
				total++;
				memorySize += systemTaskInfo.getMemorySize();
			}
		}
		
		Toast.makeText(getApplicationContext(), "清理了"+total+"个进程"+"释放了" + TextForMater.getKBDataSize(memorySize)+"M内存", 0).show();
		
		fillData();
	}

在Activity中调用以上方法;

private void fillData() {
		
		setTitleData();
		
		new Thread(){
			public void run() {
				ll_task_manager_loading = (LinearLayout) TaskManagerActivity.this.findViewById(R.id.ll_task_manager_loading);
				ll_task_manager_loading.setVisibility(View.VISIBLE);
				provider = new TaskInfoProvider(TaskManagerActivity.this);
				taskInfos = provider.getAllTasks(runningProcess);
				
				Message msg = new Message();
				msg.what = GET_ALL_TASK_FINISH;
				
				handler.sendMessage(msg);
			};
		}.start();
	}

kill方法中调用了子线程的方法,出错原因是ll_task_manager_loading是主线程中的对象,不能再子线程里调用,因为没其生命周期已经结束。

参考


















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值