Android 错误集锦



一、【线程相关】Can't create handler inside thread that has not called Looper.prepare()

Cause Reason:通常是在非主线程中执行了与UI相关的操作。例子如下:

/**
 * @author heg
 * @version 创建时间:2014-3-12 上午9:53:03
 * @description: 
 *               验证对话框能否从Service中弹出,不需要Activity?<br>
 * 
 */
public class DialogShowFromService extends Service {

	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
//		show();
		showDialog();
		return super.onStartCommand(intent, flags, startId);
		
	}
	
	private void showDialog() {
		new Thread(new Runnable(){
			
			@Override
			public void run() {
				try {
					Thread.sleep(5000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				show();
			}
			
		}).start();
		
	}
	
	private void show() {
		AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
		builder.setTitle("从Service弹出来!");
		builder.create().show();
		
	}
}

二、【Context相关】Unable to add window -- token null is not for an application

Cause Reason:通常是在错误的上下文中创建View,如在Service中直接添加UI组件就不行。例子如下:

/**
 * @author heg
 * @version 创建时间:2014-3-12 上午9:53:03
 * @description: 
 *               验证对话框能否从Service中弹出,不需要Activity?<br>
 * 
 */
public class DialogShowFromService extends Service {

	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		show();
//		showDialog();
		return super.onStartCommand(intent, flags, startId);
		
	}
	
	private void show() {
		AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
		builder.setTitle("从Service弹出来!");
		builder.create().show();
		
	}
}

Ps: 上面例子的结论是:

 /*<p>结论:<br>
 * Service中可以不需要Activity弹出对话框,<br>
 * 但只能弹出系统级对话框,并且需要以下两个条件:
 * <br>dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)
 * <br>"android.permission.SYSTEM_ALERT_WINDOW"*/


三、【编译相关】如何编译第三方jar包。

#先指定库名,可以自己定义。多个有多个需要 libName1 \ libName2  这样
LOCAL_STATIC_JAVA_LIBRARIES := libName
#预编译静态库
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libName:libPath/libRealName
#不加上下一句会报need by /classes-full-debug.jar等错误
include $(BUILD_MULTI_PREBUILT)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值