Android学习(21)-一些进阶常识

本文详细介绍了在Android开发中如何通过参数形式或自定义Application类获取Context,使用Intent传递参数包括普通类型和序列化对象,以及如何通过日志通用类控制日志输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在很多操作的过程中,我们都会调用到Context,比如弹出Toast,启动活动,发送广播等。前面学到的东西这些代码都在活动里面, 直接传递this就可以了,但是随着工程的复杂,可能以后就不会那么轻易的获取到Context了。

(1)解决方法一  通过参数的形式传递Context,这样调用方法仍然需要能够访问和传递Context才行。

(2)解决方法二  使用Application类,每当应用程序启动的时候,系统都会将整个类进行初始化,我们可以定制一个自己的Application类,用于管理全局的Context对象。

public class MyApplication extends Application {
	
	private static Context context;
	
	public void onCreate(){
		//获取Context
		context = getApplicationContext();
	}
	
	public static Context getContext(){
		return context;
	}
	
}

配置文件增加一句:

 <application
        <span style="color:#ff0000;">android:name="com.example.baidumap.MyApplication"</span>
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

这样在工程中的任何地方都可以通过MyApplication.getContext()来获取Context对象了。


2、Intent使用方法已经比较熟悉了,可以用它来启动活动,广播,服务等。我们还可以通过Intent传递数值。

Intent intent = new Intent(OneActivity.this,TwoActivity.class);
intent.putExtra("string_data","hello");
startActivity(intent);

//获取数据
getIntent().getStringExtra("string_data");
或者
getIntent().getIntExtra("int_data",0);

那么如何通过Intent来传递自定义的对象呢?

(1)传递序列化对象

使得自定义类实现序列化接口,然后在intent中通过

intent.putExtra("serialization_object",object);

然后获取方式:

(Person)getIntent().getSerializableExtra("serialization_object");

(2) Parcelable方式

通过把对象进行分解,然后每一部分都是可以直接被传递的对象,比较繁琐复杂,此处不再赘述。有兴趣的可以自己查看一下。


3、如何控制日志的输出

工程中有很多日志输出的地方,要学会如何控制日志在什么时候输出,什么时候不输出。可以编写一个日志通用类:

public class LogUtil {
	
	public static final int VERBOSE = 1;
	public static final int DEBUG = 2;
	public static final int INFO = 3;
	public static final int WARN = 4;
	public static final int ERROR = 5;
	public static final int NOTHING = 6;
	public static final int LEVLE = VERBOSE; //通过控制LEVEL的数值就可以控制日志的输出情况
	
	public static void v(String tag, String msg){
		if(LEVLE <= VERBOSE){
			Log.v(tag, msg);
		}
	}
	
	public static void d(String tag, String msg){
		if(LEVLE <= DEBUG){
			Log.d(tag, msg);
		}
	}
	
	public static void i(String tag, String msg){
		if(LEVLE <= INFO){
			Log.i(tag, msg);
		}
	}
	
	public static void w(String tag, String msg){
		if(LEVLE <= WARN){
			Log.w(tag, msg);
		}
	}
	
	public static void e(String tag, String msg){
		if(LEVLE <= ERROR){
			Log.e(tag, msg);
		}
	}
	
}

通过控制其中的LEVLE数值就可以控制日志的输出。之后便可以在代码中使用LogUtil.d()等方法了。


4、测试Android项目

(1)直接Debug As -  Android Application

(2)在DDMS界面找到程序进程,点击上方的虫子,就可以进入调试界面了。

(3)编写测试用例,为项目创建测试工程。Android Test Project



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值