当前位置: 代码迷 >> Android >> android 细碎
  详细解决方案

android 细碎

热度:76   发布时间:2016-05-01 17:12:10.0
android 零碎
1、定义为static的变量在activity调用onDestroy()方法结束后还保存在内存中!可能会影响接下来的启动运行!注意了!

2、程序中有多个activity在其中一个中退出整个程序:http://blog.csdn.net/tangfeidd/archive/2011/03/04/6222358.aspx

3、activity和service直接通信:
Activity调用Service用IBinder,Service向Activity发送消息则可借助于BroadcastReceiver。
参考:http://zhangyan1158.blog.51cto.com/2487362/491358

4、Service中用BroadcastReceiver给Activity发送广告,这是因为BroadcastReceiver定义在Activity的内部所以不能用静态注册法,即不能再Androidmanifest.xml中注册,要在Service中使用时动态注册。当BroadcastReceiver时内部类时,只能通过代码注册的方式注册。但内部类可以直接与Activity交互,比较方便。

5、在一个Service中启动一个Activity的方法:http://aijiawang-126-com.iteye.com/blog/953564
Intent intent = new Intent(this,Test.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent); 


6、Android中在绘图中的多线程中,invalidate和postInvalidate这两个方法是用来刷新界面的,调用这两个方法后,会调用onDraw方法,让界面重绘。

7、ProgressBar,长时间加载时很需要,默认让它不显示。在长时间等待时显示它,加载完成后隐藏,但一直想不明白的是实例化ProgressBar后用logining.setVisibility(View.GONE);它还是不隐藏。很郁闷,不知道什么原因。我现在是在ProgressBar的外面套了一个LinearLayout,现在直接隐藏LinearLayout。
<LinearLayout    		android:id="@+id/main_not_login"    		android:orientation="horizontal"    		android:layout_width="wrap_content"    		android:layout_height="wrap_content">    		<ProgressBar    			android:id="@+id/main_login_progress"    			android:layout_width="wrap_content"    			android:layout_height="wrap_content"    			android:visibility="gone"/>    	</LinearLayout>


8、Java SoftReference弱引用,可以存储一些图片等数据,在机子内存不够时机子会优先释放这些内存资源。SoftReference<Drawable>
参考:http://hi.baidu.com/newton111/blog/item/24cc900a7b494034b1351d8d.html

9、如何将一个layout配置文件转换为一个View:
LayoutInflater mInflater = LayoutInflater.from(Detect.this);		View head = mInflater.inflate(R.layout.head, null);


10、一个应用程序中启动另一个应用程序:
				Intent intent=new Intent();				intent.setComponent(new ComponentName("com.infoquic.cardetect","com.infoquic.cardetect.Detect")); 				startActivity(intent);

第一个是要启动的程序的包名,第二个是要启动的程序的主Activity名。

10,Widget中点击图标,启动一个新应用:
		Intent intent=new Intent();		intent.setComponent(new ComponentName("com.infoquic.cardetect","com.infoquic.cardetect.Detect")); 		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);		PendingIntent imagePending=PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);		views.setOnClickPendingIntent(R.id.widget_warning, imagePending);


11、Android工程中引入第三方Jar包,正确的导入顺序:
导入工程的jar通过 add User Library方式导入
       右键工程->build path->add Library->user Library->user Libraries->new->随便取个名字->add JARs->ok
       添加过程中记得将 user systemLibrary选中
不然会出现Unable to execute dex: Java heap space 这个问题

12、GirdView调整元素之间的间隔,
关键代码:
<GridView       android:id="@+id/grid"         android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_centerInParent="true"             android:horizontalSpacing="50dp"        android:verticalSpacing="50dp"        /> 

参考:http://www.iteye.com/topic/663177

13、Android背景选择器(selector)要注意顺序,负责没有效果:
<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_pressed="true"        android:drawable="@drawable/icon_button_kill" />    <item android:drawable="@drawable/icon_button_kill_pressed" /></selector>


14、广播里面启动一个Service,比如开机启动一个服务等。
Intent service = new Intent(mContext, CarService.class);					mContext.startService(service);


15、layout_gravity不起作用了
在linerlayout布局中,如果方向设为垂直,layout_gravity=center_vertical就不起作用,需在每个child中设置android:gravity="center_vertical"
水平方向类似。

16、OOM
http://651356806-qq-com.iteye.com/blog/1123321
http://blog.csdn.net/liaoxingliao/article/details/7168500
  相关解决方案