Articles of android activity

活动已泄露窗口 – Android

看看这些代码: Android上的自定义视图和窗口属性 问题 当我点击“主页按钮”时,抛出exception: Activity已泄露窗口……从此行: localWindowManager.addView(colourView, layoutParams); 问题(S) 你知道是什么原因造成的吗? 当我用后退按钮关闭应用程序时,问题不会发生。 exception/错误日志 W/InputManagerService( 96): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@40908148 (uid=10056 pid=1368) D/CordovaActivity( 1368): CordovaActivity.onDestroy() D/CordovaWebView( 1368): >>> loadUrlNow() E/WindowManager( 1368): Activity com.phonegap.helloworld.HelloWorld has leaked window pl.edu.uj.tcs.student.xxx.Display$Layer@40589368 that was originally added here E/WindowManager( 1368): android.view.WindowLeaked: Activity com.phonegap.helloworld.HelloWorld has leaked window pl.edu.uj.tcs.student.xxx.Display$Layer@40589368 that was originally added here […]

从Activity启动IntentService并在IntentService完成时刷新Activity

在我的Android应用程序中,我有一个带适配器的简单列表视图。 有一个繁重的查询是用数据填充列表视图。 所以我把它放到另一个线程中运行的IntentService中。 IntentService通常单独运行,只是为了查询一些数据并将其插入SQLite数据库。 但现在我想有以下可能性: 该活动使用startService()启动IntentService。 IntentService做了很多工作。 当IntentService完成时,它应该通知活动有关结果的信息,以便可以刷新活动以显示新数据。 这可能吗? 我在这个主题的Stack Overflow上阅读了很多问题。 但在每一个问题中,都有另一种解决方案。 所以我想问你们所有人:哪种解决方案最符合我的目的? 将IntentService绑定到Activity似乎不是最佳解决方案,因为可能存在与活动等配置更改的冲突。正确吗? 这篇博文建议使用带有Parcelables的AIDL – 这对我来说听起来非常复杂。 有一种更简单的方法,不是吗? 可以在活动中设置广播接收器,并在完成后在IntentService中触发此广播。 有人说你应该使用createPendingResult()将PendingIntent传递给IntentService。 如果IntentService在其附加内容中发现PendingIntent,则使用它来触发Activity中的onActivityResult()。 这是选择的方式吗?

使“向上”按钮的行为类似于Android上的“后退”按钮

我正在使用的Android应用程序设计调​​用“向上”按钮的行为与“后退”按钮的行为相同,但我不确定如何实现这一点。 我知道必须为“Up”按钮指定android:parentActivityName才能在活动上显示,但是指定固定的父活动对于活动并不真正有意义。 想象一下活动A,B和C的这种情况: 启动到活动A,它包含两个按钮:每个按钮分别带您进入活动B和C. 点击活动B的按钮。 转换到活动B.它包含两个按钮:每个按钮分别带您进入活动A和C. 点击活动C的按钮。 过渡到活动C. 点击“向上”按钮,您应该参加活动B. 现在在活动B上:点击活动A的按钮。 过渡到活动A. 点击“向上”按钮,您应该参加活动B. 在活动B点击“向上”按钮,您应该参加活动A. 现在在活动A上:点击活动C的按钮。 过渡到活动C. 点击“向上”按钮,您应该进入活动A. 如果我为每个活动指定android:parentActivityName ,那么将B和C的父活动设为A是有意义的,但这意味着每次我们从活动B或C中点击“向上”按钮时,我们都会登陆活动A (而且这并不总是应该发生的事情)。 有没有人有这种types的经验?

获取应用程序上下文

这可能是一个简单的问题,但我只是想确保我是对的。 在我的Android应用程序中,我有一个使用的构造函数: activity.getApplicationContext() 活动作为parameter passing给构造函数。 问题是我从服务中调用此类。 如果我创建第二个构造函数接受Service作为参数并使用service.getApplicationContext ? 我会获得相同的应用程序上下文吗?

Android PendingIntent会带您进入已有的活动吗?

真的不确定如何搜索这个…… 每当在我的队列中添加或删除作业以在状态栏中发出通知时,我都会调用以下内容: private void showNotification() { int jobsize = mJobQueue.size(); int icon = (jobsize == 0) ? android.R.drawable.stat_sys_upload_done : android.R.drawable.stat_sys_upload; Notification notification = new Notification(icon, “Test”, System.currentTimeMillis()); Intent intent = new Intent(this, FileManagerActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); notification.flags = (Notification.FLAG_SHOW_LIGHTS | Notification.FLAG_AUTO_CANCEL); notification.setLatestEventInfo(this, “Uploading to our servers”, getString((jobsize > 0) ? R.string.notification_active_transfers […]

关于将UI从BroadcastReceiver更新为特定活动的Android最佳实践

当我有一个broadcastReceiver说android.intent.action.MEDIA_BUTTON并且我想在不创建新活动的情况下更新当前活动的UI时,这个有什么好的做法吗? 我所知道的(可能不正确) 1)我可以将BroadcastReceiver放在与活动相同的类中,并在某些活动后调用updateUI函数 2)创建一个ContentObserver? 3)与活动创建的服务进行通信,使用aidl。 (如果从活动中注册,我不知道如何获得当前服务) 4)在与活动相同的类上的broadcastReceiver上创建自定义filter,并使用context.sendBroadcast(自定义filter的消息)和自定义filter调用updateUI(与一个相同但更通用?) 最后一个流程是来自BroadcastReceiver并最终更新UI而不更新活动(除非活动已经死了?) 请提供有关如何解决此类问题的链接/源代码。 非常感谢提前:)

如何以编程方式动态创建所有Android ui组件的列表? 例如TextView,ImageView等

我正在创建一个程序,我需要在其中创建所有不同Android组件的列表,而不是手工识别和键入List 。 我想以编程方式弄清楚我是否可以完成此操作以添加到String Arrays中,如下所示? Components[] = {“TextView”, “ImageView”, “RelativeLayout”, “LinearLayout”, “Random”, “DecimalFormat … 类似地,我想以编程方式创建所有不同数据types的列表 ,例如Int,String,ArrayList等,以添加到String Arrays,如下所示 DataTypes[] = {“Int”, “String”, “Object”, “Double”, “Char”, “Boolean … 到目前为止我能做的就是上面。 到目前为止,我一直在打字,如上所述。 我怎么能做到这一点? 谢谢 澄清 按数据types:我的意思是声明保存数据的variablestypes,例如Int,String,object,boolean,double,arrays,arraylists等。 按组件:我的意思是任何可以添加到Android的xml的可视组件,例如ImageView,TextView,LinearLayout,RelativeLayout等。 是的,我知道这些组件的数量可以是无限的(由使用的API决定),我想为它动态生成它们 最好不要使用别人的图书馆

Android浮动活动在滑动时关闭

最新Facebook的Android应用程序有一个非常漂亮的浮动评论窗口。 在那里,用户可以关闭向上或向下滑动的窗口,使其非常易于使用。 我想在我的应用程序中实现类似的行为,但我不知道该怎么做。 任何关于如何做的想法或线索都将非常感激。 Facebook应用程序的屏幕截图 (抱歉,我截取屏幕截图的Facebook应用程序是日文)

Android应用程序上的DeadObjectException

有时我会启动我的应用程序的Activity ,或者在ViewPager Fragment之间快速切换,这是在那个特定的Activity ,我得到了像这样的DeadObjectException : W/ActivityManager( 669): android.os.DeadObjectException W/ActivityManager( 669): at android.os.BinderProxy.transact(Native Method) W/ActivityManager( 669): at android.app.ApplicationThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:660) W/ActivityManager( 669): at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:776) W/ActivityManager( 669): at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:2501) W/ActivityManager( 669): at com.android.server.am.ActivityStack.finishTopRunningActivityLocked(ActivityStack.java:2375) W/ActivityManager( 669): at com.android.server.am.ActivityStackSupervisor.finishTopRunningActivityLocked(ActivityStackSupervisor.java:2040) W/ActivityManager( 669): at com.android.server.am.ActivityManagerService.handleAppCrashLocked(ActivityManagerService.java:9667) W/ActivityManager( 669): at com.android.server.am.ActivityManagerService.makeAppCrashingLocked(ActivityManagerService.java:9560) W/ActivityManager( 669): at com.android.server.am.ActivityManagerService.crashApplication(ActivityManagerService.java:10205) W/ActivityManager( 669): at com.android.server.am.ActivityManagerService.handleApplicationCrashInner(ActivityManagerService.java:9756) W/ActivityManager( 669): at com.android.server.am.NativeCrashListener$NativeCrashReporter.run(NativeCrashListener.java:86 和应用程序崩溃。 我也有一些像这样的不寻常的日志: […]

当活动被破坏时,活动背叛的不当行为

我有两个活动; 让我们说A和B.在activity A有一个广播接收器注册了侦听将完成活动A的特定事件。我在onCreate()注册广播接收器,并在activity A onDestroy()中销毁它。 为简单起见, activity B有一个名为“销毁活动A”的button 。 当用户点击button ,应销毁activity A 通常所有这些都运行顺利,没有任何问题,但问题出现在以下场景中: 1)假设我在activity B ,我按Home键将应用程序移动到后台然后如果我使用其他资源繁重的应用程序,Android系统将杀死我的应用程序以释放内存。 然后,如果我从最近的任务中打开我的应用程序,将恢复activity B ,并且将调用onCreate() , onResume()等方法。 现在我按下button来销毁activity A ,但活动A已被销毁,因此activity A的onCreate() , onResume()等方法将不会被调用,除非我按下back button进入activity A 因此, broadcast receiver未注册以监听事件。 2)当用户在设备的设置中从Developer选项中选择“Do not keep activities”时,会出现同样的问题。 我一直在寻找解决这个问题很长一段时间,但我无法find合适的答案。 处理此方案的最佳方法是什么? 这是Android的错误吗? 这个问题应该有一些解决方案。 请帮帮我。