Articles of android activity

活动生命周期中的android内存管理

我的问题有点复杂。 我想了解应用程序如何在Activity启动时处理资源(尤其是背景,按钮等图像),然后暂停。 例如,我启动活动A,它显示屏幕上的所有图像,吃掉它的内存,然后启动另一个活动B并暂停A. 所有图像,资源等都会发生什么? 当他们被释放? 我该如何控制它们? 我不应该将活动A保留在内存中并将其从活动堆栈中删除吗? 如果您需要澄清我的问题,请写信给我! 提前致谢! Danail

Android Activity生命周期和锁定/解锁设备

我刚刚发现当设备启用锁定屏幕时,会发生以下情况。 对于此活动,在清单中设置android:screenOrientation =“landscape”。 然后我用手机以纵向模式执行以下操作。 用户打开一个活动。 调用onCreated() onStart()被调用 onResume()被调用 用户LOCKS设备4.5 onPause被调用() onDestroy()被调用 onCreate()被调用 onStart()被调用 onResume()被调用8.5 onPause被调用() 用户解锁设备 onResume()被调用 onDestroy()被调用 onCreate()被调用 onStart()被调用 onResume()被调用。 好吧,我不明白为什么在屏幕关闭后执行6,7,8 ..同样我不明白为什么要执行11,12,13,14。 当我锁定和解锁设备时,会发生一些奇怪的事情吗? 我突然对活动生命周期感到困惑..任何人都可以澄清一下吗? 附上代码和日志消息 package com.example.wf; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(“log”, “oncreate”); } @Override protected void onResume() […]

ViewPager wrap_content无法正常工作

我做了一个滚动视图,里面有一个viewpager。 但是viewpager的高度并没有增长。 Wen在viewpager里面的内容是大到内部得到pucht,表是收缩的空间。 我已经搜索了一个解决方案,发现问题是“wrap_content”,如果viewpager被加载则没有内容。 所以viewpager保持屏幕高度。 我find的解决方案不适用于“FragmentPagerAdapter”,所以我编辑了这个问题。 请指出我正确的方向。 Greathings christophe VD 主要布局是这样,底部的时间标记是问题之一: 它需要更多这样的: FragmentPagerAdapter是: import android.content.Context; import android.graphics.pdf.PdfDocument; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class film_tabs_adapter extends FragmentPagerAdapter { private final String[] TITLES = { “Info”, “Comment”, “Cast”, “Muziek”}; String[] Film_Data; public film_tabs_adapter(FragmentManager fm, String[] Film_Data_in) { […]

活动已泄露窗口 – 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决定),我想为它动态生成它们 最好不要使用别人的图书馆