当我试图获取默认蓝牙适配器时,我不在活动中,但在TimerTask(在内部创建Service)使用:
BluetoothAdapter.getDefaultAdapter();
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
Exception while invoking java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
Run Code Online (Sandbox Code Playgroud)
我的应用程序没有任何活动 - 所以有没有可能让这个适配器远离Activity?
我有一个简单的设置:
CrashHandler- 实施的一个类Thread.UncaughtExceptionHandler;CrashActivity - 可以发送用户报告的活动;MainActivity - 用户应与之交互的主应用程序. 当在其中MainActivity任何一个线程中存在未捕获的异常时,CrashHandler它会拦截它并创建一个意图启动通知的通知CrashActivity:
Intent it = new Intent("CrashReporter" + SystemClock.currentThreadTimeMillis());
it.setClass(context, CrashActivity.class);
it.setFlags(it.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
Run Code Online (Sandbox Code Playgroud)
同时Android显示"应用程序崩溃"消息,用户单击"确定",应用程序关闭,然后用户可能会单击notification.如果notification单击,则CrashActivity启动并显示.
这段代码已经在很多不同的情况下工作了很长时间(主线程崩溃handler,崩溃,背景崩溃thread......).但是,我最近发现,如果在OnClickListener.onClick附加到a button中的侦听器中的方法中抛出异常,则它不起作用MainActivity.情况如下:
NullPointerException;CrashHandler拦截它并创建一个notification(显示);MainActivity被冻结;CrashActivity,则会显示黑屏并且所有内容都会冻结(未显示所需的活动).Logcat显示启动时超时,甚至在OnCreate我的代码之前或之前:
I/ActivityManager(11826): START u0 {act=CrashHandler1196 flg=0x14000000 cmp=mycompany.myapp/.CrashActivity bnds=[0,102][720,230] (has extras)} from pid …Run Code Online (Sandbox Code Playgroud) 简而言之,我想缩放视图 - 就像Android Market一样,当你单击"更多"按钮时,在例如'描述'上.
我弄清楚,Android Market具有以下结构的布局:
<FrameLayout
android:id="@+id/artists_frame"
android:layout_width="fill_parent"
android:layout_height="64dip"
android:layout_below="@id/something1"
android:layout_above="@id/something2"
>
<!-- Some view there, which height >> 64dip -->
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
所以,我在FrameLayout(via view.setAnimation(), view.setLayoutAnimation()和ScaleAnimation)上尝试了各种动画/ LayoutAnimations ,但效果总是一样的:视图动画,但是缩放后的真实layout_height仍然是相同的(所以其他视图的位置,那个取决于给定的FrameLayout,保持不变).
之后,我想 - 我在循环中更改了给定FrameLayout的layout_height:
layoutParams = view.getLayoutParams()
layoutParams.height = scaleTo;
layout.setLayoutParams(layoutParams);
Run Code Online (Sandbox Code Playgroud)
我有它的动画,市场般的观点,但成本(性能!!!)是高...
因此,问题是:是否有任何其他适当的方法来缩放(例如将高度从50dip更改为200dip)给定的View/ViewGroup,以便动画视图下方的视图位置也发生变化?