当前位置:  编程技术>移动开发
本页文章导读:
    ▪让一个Activity唯有一个自定义Toast        让一个Activity只有一个自定义Toast   package com.wxlh.ptas.ui; import android.content.Context; import android.view.Gravity; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.wxlh.pt.........
    ▪ AsyncTask 的施行顺序很重要        AsyncTask 的执行顺序很重要   @Override protected ListAdapter initListViewAdapter() { Log.e("--------------", "执行--0"); new AsynchTaskRequestData().execute(); Log.e("--------------", "执行--99"); mAdapter = new DailContactAdapte.........
    ▪ 内存储器管理       内存管理 内存管理可以说是 iPhone 开发中最重要也最令人头疼的关键点。CocoaChina 版主“lvyile”总结了内存管理中最应注意的事项,分别是: 通过分配或复制创建的对象保持计数为 1;假设任.........

[1]让一个Activity唯有一个自定义Toast
    来源: 互联网  发布时间: 2014-02-18
让一个Activity只有一个自定义Toast

 

package com.wxlh.ptas.ui;

import android.content.Context;
import android.view.Gravity;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.wxlh.ptas.R;

public class TextToast {

	private Context context;

	private Toast toast;

	public TextToast(Context context) {
		this.context = context;
		toast = new Toast(context);
	}

	private Toast getToast() {
		if (null == toast) {
			toast = new Toast(context);
		}
		return toast;
	}

	public void show(Context context, String msg) {

		Toast toast = getToast();
		TextView textOverlay = new TextView(context);
		LinearLayout mLinearLayout = new LinearLayout(context);
		mLinearLayout.setBackgroundResource(R.drawable.bg_hitchar);
		textOverlay.setText(msg);
		textOverlay.setTextColor(R.color.white);
		textOverlay.setTextSize(70);
		textOverlay.setWidth(100);
		textOverlay.setMinWidth(100);
		textOverlay.setPadding(10, 10, 10, 10);
		textOverlay.setGravity(Gravity.CENTER | Gravity.CENTER_VERTICAL);
		mLinearLayout.addView(textOverlay);
		toast.setView(mLinearLayout);
		toast.setDuration(Toast.LENGTH_SHORT);
		toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
		toast.show();
	}
}

 调用:

 

1. private TextToast textToast;
2.textToast = new TextToast(this);
3.textToast.show(DailContact.this, element.substring(0, 1));

    
[2] AsyncTask 的施行顺序很重要
    来源: 互联网  发布时间: 2014-02-18
AsyncTask 的执行顺序很重要

 

@Override
	protected ListAdapter initListViewAdapter() {
		Log.e("--------------", "执行--0");
		new AsynchTaskRequestData().execute();
		Log.e("--------------", "执行--99");
		mAdapter = new DailContactAdapter(this, cInfos, listTag);
		Log.e("--------------", "执行--100");
		return mAdapter;
	}

	private class AsynchTaskRequestData extends AsyncTask<Integer, Void, List<ContactInfo>> {

		@Override
		protected List<ContactInfo> doInBackground(Integer... params) {
			Log.e("--------------", "执行--1");
			try {
				Log.e("--------------", "执行--2");
				Thread.sleep(PtasApplication.THREAD_SLEEP_TIME);
			} catch (InterruptedException e) {
				Log.e(DailContact.this.getClass().getName(), "InterruptedException", e);
			}
			Log.e("--------------", "执行--3");
			return ContactHolder.getContactInfosSort(DailContact.this, getWhere(), getOrder(), listTag);
		}

		@Override
		protected void onPreExecute() {

			Log.e("--------------", "执行--4");
			commonList.addFooterView(loadingView);
		}

		@Override
		protected void onPostExecute(List<ContactInfo> currentCInfos) {

			Log.e("--------------", "执行--5");
			if (cInfos.size() == 0) {
				displayText.setVisibility(View.VISIBLE);
			}
			if (currentCInfos.size() == 0) {
				if (cInfos.size() == 0) {
					displayText.setVisibility(View.VISIBLE);
				}
				commonList.removeFooterView(loadingView);
				return;
			}
			displayText.setVisibility(View.GONE);
			Log.e("--------------", "执行--6");
			cInfos.addAll(currentCInfos);
			mAdapter.notifyDataSetChanged();
			mAdapter.initSections(currentCInfos);
			sections = mAdapter.getSections();
			commonList.removeFooterView(loadingView);
			Log.e("--------------", "执行--7");
		}

	}

 日志记录如下:

12-08 01:00:16.854: E/--------------(571): 执行--0
12-08 01:00:16.873: E/--------------(571): 执行--4
12-08 01:00:16.894: E/--------------(571): 执行--99
12-08 01:00:16.894: E/--------------(571): 执行--100
12-08 01:00:16.923: E/--------------(571): 执行--1
12-08 01:00:16.923: E/--------------(571): 执行--2
12-08 01:00:18.724: I/MapActivity(571): Handling network change notification:CONNECTED
12-08 01:00:18.724: E/MapActivity(571): Couldn't get connection factory client
12-08 01:00:18.924: E/--------------(571): 执行--3
12-08 01:00:27.484: D/dalvikvm(571): GC_FOR_MALLOC freed 9497 objects / 335464 bytes in 85ms
12-08 01:00:34.383: D/dalvikvm(571): GC_FOR_MALLOC freed 12655 objects / 473528 bytes in 75ms
12-08 01:00:38.203: D/dalvikvm(571): GREF has increased to 201
12-08 01:00:40.334: E/--------------(571): 执行--5
12-08 01:00:40.334: E/--------------(571): 执行--6
12-08 01:00:40.684: E/--------------(571): 执行--7
12-08 01:00:42.954: D/dalvikvm(571): GC_FOR_MALLOC freed 12275 objects / 499120 bytes in 71ms

 

结论:如果要在Adapter中处理一些数据,并且将其放在了new Adapter()的构造方法中,这是很危险的,因为在数据还没有处理完成的时候,Adapter 已经被new出来了,在对其进行的后续操作都是都是null。

 

 

结论:执行顺序 onPreExecute-->doInBackground-->onPostExecute 

AsyncTask<Integer, Void, List<ContactInfo>>


第一个是指 doInBackground中接收的参数的类型 
第二个是指onProgressUpdate中接收的参数的类型 
第三个是每日doInBackground返回值的类型以及onPostExecute接收的参数的类型 
 

 


    
[3] 内存储器管理
    来源: 互联网  发布时间: 2014-02-18
内存管理

内存管理可以说是 iPhone 开发中最重要也最令人头疼的关键点。CocoaChina 版主“lvyile”总结了内存管理中最应注意的事项,分别是: 通过分配或复制创建的对象保持计数为 1;假设任何别的方法获取的对象保持计数为1, 而且在自动释放池中,要想在当前执行范围外使用该对象,就必须保持它;向集合添加对象时它就被保持,从集合移走对象时就被释放。释放集合对象(如 NSArray )会释放该集合当中所有的对象;确保有多少个 alloc, copy, mutableCopy 或 retain 消息就有多少 release 或 autorelease 消息发送给该对象。换句话说,确保您代码的平衡;在访问方法设置属性时先保持,再释放;在程序中用 @"..." 结构创建的 NSString 对象是有效常量,向它们发送 retain 或者 release 消息没有用;使用便利构造方法创建的对象(如 NSString 的 stringWithFormat )可以被认为会自动释放;在使用你自己的参数实例时,需要实现 -dealloc 方法来释放。


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3