Questions tagged «android-activity»

有关在Android中创建或管理“活动”的问题。在Android应用程序中,活动是提供用户界面的组件,允许用户执行某些操作。简单的例子是:拨打电话,拍照,发送电子邮件或查看地图。

5
片段中的runOnUiThread
我正在尝试将活动转换为片段。上的错误标记runOnUiThread。在过去: GoogleActivityV2来自Activity。类ExecuteTask中的runOnUiThread。类ExecuteTask嵌套在活动上。 (运行确定)现在: GoogleActivityV2来自Fragment。类ExecuteTask中的runOnUiThread。类ExecuteTask嵌套在活动上。(关于runOnUiThread的错误) 这是我的代码 public class GoogleActivityV2 extends SherlockMapFragment implements OnMapClickListener , OnMapLongClickListener , OnCameraChangeListener , TextWatcher { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ View rootView = inflater.inflate(R.layout.activity_googlev2, container, false); Init(); adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_dropdown_item_1line); textView = (AutoCompleteTextView) getView().findViewById(R.id.autoCompleteTextView1); return rootView; } public void onCameraChange(CameraPosition …


7
Android Fragment生命周期随方向变化而变化
使用兼容性包以Fragments为目标2.2。 重新编码活动以在应用程序中使用片段后,我无法进行方向更改/状态管理,因此我创建了一个具有单个FragmentActivity和单个Fragment的小型测试应用程序。 来自方向更改的日志很奇怪,有多个对片段OnCreateView的调用。 我显然丢失了一些东西-例如分离片段并重新附加它,而不是创建新实例,但是我看不到任何文档来表明我要去哪里。 任何人都可以告诉我我在做什么错。谢谢 方向更改后,日志如下。 Initial creation 12-04 11:57:15.808: D/FragmentTest.FragmentTestActivity(3143): onCreate 12-04 11:57:15.945: D/FragmentTest.FragmentOne(3143): OnCreateView 12-04 11:57:16.081: D/FragmentTest.FragmentOne(3143): OnCreateView->SavedInstanceState null Orientation Change 1 12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): onSaveInstanceState 12-04 11:57:39.031: D/FragmentTest.FragmentTestActivity(3143): onCreate 12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): OnCreateView 12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): OnCreateView->SavedInstanceState not null 12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): OnCreateView 12-04 11:57:39.167: D/FragmentTest.FragmentOne(3143): OnCreateView->SavedInstanceState …


2
Android破坏活动,杀死进程
您好,我想知道Android如何管理内存,却找不到任何准确答案。假设我有一个应用程序,该应用程序在当前活动堆栈上有5个活动(已停止4个并恢复了1个),没有连接服务。我按下HOME按钮,以便我的所有活动都停止。我启动了其他一些消耗内存的应用程序,并且设备的整体内存开始变低。问题是 ...我的申请会怎样? 系统能否销毁我的一项或多项活动以恢复内存? 系统会杀死我的整个申请过程吗?所有活动都会被销毁吗? 当我的应用程序被全部杀死后,会如何处理?它是从一开始就开始(像第一次启动一样),还是会尝试将活动恢复到较早的状态?如果是,则-是仅堆栈顶部的活动还是所有活动? 更新: 在问这个问题之前,我已经看过几次Activity生命周期,但是没有我的问题的答案。我做了一些测试,并得到了一些答案。DDMS中的“停止过程”是进行测试的线索。 我尚未测试问题1的答案,但如指南所述: 如果活动被暂停或停止,则系统可以通过要求活动结束或直接终止其进程来将其从内存中删除。 似乎可以轻而易举地破坏一个或多个活动(使用onDestroy方法)而不会终止该过程。返回它们时,您将简单地获得它们(onCreate +捆绑包)。 问题2的答案: 是。通常,系统会杀死整个过程,这意味着包括活动和静态字段在内的所有数据都将被破坏。这做得不好-任何暂停/停止的活动都不会获得onDestroy或finialize()。这就是为什么在onPause方法之前调用saveInstanceState()的原因。onPause基本上是您应该保存内容的最后一种方法,因为在此方法之后,您将永远看不到onStop或onDestroy。系统可以杀死所有对象,无论它们拥有什么或做什么都破坏其进程。 问题3的答案: 当您返回被终止的应用程序时会发生什么? 在Android 2.2之前的版本中-应用程序将从开始启动,并具有启动器活动。 从2.2开始-系统将恢复以前的应用程序状态。这是什么意思?这意味着将重新创建上一个可见活动(onCreate +捆绑包)。活动堆栈会发生什么?堆栈很好,但是上面的所有活动均已终止。当您使用“后退”按钮返回到它们时,将重新创建它们(onCreate + bundle)。还有一件事: 通常,在某些情况下,当用户从主屏幕中重新选择任务时,系统会清除任务(从堆栈中删除根活动上方的所有活动)。通常,如果用户在一定时间(例如30分钟)内没有访问任务,则可以执行此操作。 结论? 不要以为android:configChanges =“ orientation”可以解决处理活动轮换的问题。当您这样做时,您会遇到许多其他您根本没有意识到的问题。 使用DDMS-停止进程按钮测试您的应用程序。看这个 使用静态变量时要小心。不要以为在活动1中初始化它们时-您将在活动2中对其进行初始化。初始化全局静态变量的唯一安全位置是Application类。 请记住,您可能永远不会看到onStop或onDestroy。关闭文件/数据库,停止onPause中的下载器。如果您希望应用程序在BG中执行某些操作,请使用前台服务。 就是这样...希望我能帮助我解决问题:)

5
在Android中启动服务
当某个活动开始时,我想致电服务。因此,这是Service类: public class UpdaterServiceManager extends Service { private final int UPDATE_INTERVAL = 60 * 1000; private Timer timer = new Timer(); private static final int NOTIFICATION_EX = 1; private NotificationManager notificationManager; public UpdaterServiceManager() {} @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public …

4
在Android中调用其他活动时如何提供动画?
我有两个活动A和活动B。我想在活动A调用B时具有收缩动画,而在活动B调用A时使动画最大化。为此,我不需要动画xml文件。 当我们在Android中调用另一个Activity时,它会提供其默认动画,然后会调用收缩动画。 我想要的是不应出现默认动画,而应该出现我想要的动画。 我们可以在调用另一个Activity时实际给出动画吗?

3
进一步了解setRetainInstance(true)
什么究竟,当你调用发生setRetainInstance(true)在Fragment?该文档实际上不存在,这似乎是非常重要的功能。具体来说,我想知道这个序列(我组成的)中有多少是正确的: 用户旋转设备。 该片段与分离Activity,Fragment.onDetach()并被调用。 活动被破坏;Activity.onDestroy()叫做。 所述Activityjava对象被删除(如果可能,通过GC)。 Activity创建了一个新的java对象;它的构造函数,并被onCreate()调用。 在其中,Activity.onCreate()我们要么setContentView(...)设置包含片段的布局,要么FragmentTransaction 用于添加片段。 我真的不太确定,但是我认为android足够聪明,可以找到旧的片段,然后调用Fragment.onAttach()以将其重新附加到新片段上Activity 接下来(或之前?谁知道?)Activity.onResume()被调用。 那是正确的吗?即使我FragmentTransaction.add(new MyFragment(), ...)是第一次使用Android,Android是否也足够智能以找到旧片段?如果是这样,如何避免在其中添加另一个片段onCreate()?我需要做这样的事情吗: if (getSupportFragmentManager().findFragmentByTag("foo") == null) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.add(new FooFragment(), "foo").commit(); }

23
如何检查活动是在前景中还是在可见背景中?
我的计时器上有启动画面。我的问题是,在finish()我进行活动之前,我需要检查下一个活动是否已经开始,因为会弹出一个系统对话框,而我只想这样做finish()。一旦用户从对话框中选择了一个选项? 我知道关于如何查看您的活动是否在前台有很多问题,但是我不知道这是否也允许在活动顶部显示对话框。 这是问题所在,红色是我的活动,而背景是对话,而红色是我的活动: 编辑:我已经尝试过不使用,finish()但是我的活动可以回到我试图避免的应用程序堆栈中。

7
如何在对话框中保持沉浸模式?
当我的活动显示自定义对话框时,如何维护新的“沉浸模式”? 我正在使用下面的代码来维护“对话框”中的“沉浸模式”,但是使用该解决方案,当启动自定义对话框时,NavBar会显示不到一秒钟,然后消失。 以下视频更好地说明了此问题(当出现NavBar时,请在屏幕底部查看):http: //youtu.be/epnd5ghey8g 如何避免这种行为? 码 我的应用程序中所有活动之父: public abstract class ImmersiveActivity extends Activity { @SuppressLint("NewApi") private void disableImmersiveMode() { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_FULLSCREEN ); } } @SuppressLint("NewApi") private void enableImmersiveMode() { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | …

5
究竟何时调用onSaveInstanceState()和onRestoreInstanceState()?
下图(来自官方文档)描述了Android活动的众所周知的生命周期: 另一方面,当活动被系统销毁时(例如,由于需要回收内存),活动状态有时会通过方法和自动保存和恢复,如下图所示(也来自官方文档):onSaveInstanceState()onRestoreInstanceState() 我知道 onSaveInstanceState()是不是总叫当活动即将被销毁。例如,如果由于用户按下“后退”按钮而将其销毁,则不会保留活动状态。但是在状态被保存,恢复和onSaveInstanceState()/ onRestoreInstanceState()或被调用的情况下,究竟何时调用它们? 例如,根据以上附图,onRestoreInstanceState()可能在之前onStart()或之后被调用,onStart()但是在之前onResume()或之后被调用onResume()。同样,存在多种可能性onSaveInstanceState()。那么什么时候确切地称呼他们呢? 理想情况下,我希望看到一张显示活动生命周期状态和save / restore方法(如果存在)的组合图。

17
Kotlin Android开始新活动
我想在Android上启动另一个活动,但出现此错误: 请指定构造函数调用;分类器“ Page2”没有伴随对象 在实例化Intent该类之后。我该怎么做才能纠正错误?我的代码: class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } fun buTestUpdateText2 (view: View) { val changePage = Intent(this, Page2) // Error: "Please specify constructor invocation; // classifier 'Page2' does not have a companion object" startActivity(changePage) } }

10
从另一个活动中完成一个活动
我想从另一个活动中完成一个活动,例如: 在活动[A]中,单击按钮时,我在不完成活动[A]的情况下调用活动[B]。 现在在活动[B]中,有两个按钮,“ 新建”和“ 修改”。当用户单击“修改”时,从堆栈中弹出活动[A],并勾选所有选项。 但是当用户单击“ 新建”时活动[B]中的“按钮时,我将不得不从堆栈中完成活动[A],然后再次将该活动[A]重新加载到堆栈中。 我正在尝试,但是无法完成堆栈中的活动[A] ...我该怎么做? 我将代码用作: 从活动[A]: Intent GotoB = new Intent(A.this,B.class); startActivityForResult(GotoB,1); 同一活动中的另一种方法 public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == 1) { if (resultCode == 1) { Intent i = getIntent(); overridePendingTransition(0, 0); i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); finish(); overridePendingTransition(0, 0); startActivity(i); } } …

8
如何向活动finish()添加动画
我在创建活动时使用了overridePendingTransition,并且效果很好,我可以看到淡入效果很好,但是当我尝试对活动的结束进行动画处理时,它仍在执行默认的从右到左滑动。 开始活动时,我首先尝试定义out动画,如下所示: Intent myIntent = new Intent(a, SkdyAlert.class); myIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); a.startActivity(myIntent); if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) { AnimationHelper.overridePendingTransition(a, R.anim.fadein, R.anim.fadeout); } 然后我在完成活动时也尝试这样做 okBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { finish(); if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) { AnimationHelper.overridePendingTransition(activity, 0, R.anim.fadeout); } } }); 但是,这两种方法都不会阻止退出动画从右向左滑动。关于我在做什么错的任何想法吗?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.