小编Koc*_*cus的帖子

BluetoothAdapter.getDefaultAdapter()在不在Activity中时抛出RuntimeException

当我试图获取默认蓝牙适配器时,我不在活动中,但在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?

android bluetooth runtimeexception

12
推荐指数
2
解决办法
3984
查看次数

当OnClickListener.onClick中存在NullPointerException时,Android会冻结(其他任务无法启动)

我有一个简单的设置:

  • 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.情况如下:

  1. 我执行故意抛出的代码NullPointerException;
  2. CrashHandler拦截它并创建一个notification(显示);
  3. Android不会显示任何消息(例如,没有"应用程序崩溃",这应该是可见的);
  4. MainActivity被冻结;
  5. 如果用户点击通知以启动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 onclick android-anr-dialog android-activity

10
推荐指数
1
解决办法
676
查看次数

如何缩放View/ViewGroup - 以适当的方式设置动画布局?

简而言之,我想缩放视图 - 就像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,以便动画视图下方的视图位置也发生变化?

animation android android-layout layout-animation

7
推荐指数
1
解决办法
5479
查看次数