我正在处理我正在处理的Android应用程序的问题.
我的应用程序有几个部分,下一个加载的屏幕基于一个字符串.因此,第1部分的屏幕1将是S1S1.
我的问题是,如何基于字符串启动活动.我将S1S1保存在一个字符串中,让我们称之为nextactivity.而不是必须键入S1S1.class,我需要它来自字符串.我已经完成了我可以做的一切,谷歌并没有真正帮助.
我尝试过的一些事情是
Intent myIntent = new Intent(nextactivity);
Intent myIntent = new Intent(v.getContext(), getClass().getName().valueOf(nextactivity));
Intent myIntent = new Intent(v.getContext(), Class.forName(nextactivity));
Run Code Online (Sandbox Code Playgroud)
并尝试运行
startActivityForResult(myIntent, 0);
Run Code Online (Sandbox Code Playgroud)
但似乎没什么用.有任何想法吗?
我得到了一个电话管理器(单卡或多卡设备)的实例,并得到了几个 ANR。我已经设法解决了其中的大部分问题,但这个问题仍然存在:
*意图广播{ act=android.intent.action.SCREEN_OFF flg=0x50000010(有附加功能)
处理这个问题的最佳方法是什么?其中一些只有在打开应用程序并且设备的屏幕打开几个小时时才能重现。这使得调试此类 ANR 变得困难。
报告中有一部分说运行被“锁定”。如何区分这是死锁还是线程正在等待当前操作完成?callbackDataConnectionStateChanged(), refreshTelephonyState() 方法是同步的
"main" tid=1 Native
"main" prio=5 tid=1 Native
| group="main" sCount=1 dsCount=0 obj=0x75bf6598 self=0xb87af970
| sysTid=7874 nice=0 cgrp=default sched=0/0 handle=0xb6f90b4c
| state=S schedstat=( 54620404003 32316399006 164607 ) utm=3795 stm=1667 core=1 HZ=100
| stack=0xbe13c000-0xbe13e000 stackSize=8MB
| held mutexes=
#00 pc 0000000000016978 /system/lib/libc.so (syscall+28)
#01 pc 00000000000f5e43 /system/lib/libart.so (_ZN3art17ConditionVariable4WaitEPNS_6ThreadE+82)
#02 pc 00000000003e4da3 /system/lib/libart.so (_ZN3artL12GoToRunnableEPNS_6ThreadE+502)
#03 pc 00000000000e541d /system/lib/libart.so (_ZN3art12JniMethodEndEjPNS_6ThreadE+8)
#04 pc 0000000000f31ddd /system/framework/arm/boot.oat (Java_android_os_BinderProxy_transactNative__ILandroid_os_Parcel_2Landroid_os_Parcel_2I+152)
at android.os.BinderProxy.transactNative (Native method)
at android.os.BinderProxy.transact (Binder.java:503) …Run Code Online (Sandbox Code Playgroud) performance android synchronized android-anr-dialog android-vitals