相关疑难解决方法(0)

以编程方式重新启动/重新创建活动?

在我的数据库中进行一些更改后,我的视图发生了重大变化,我想重新绘制,重新执行onCreate.

怎么可能?

android

110
推荐指数
6
解决办法
12万
查看次数

SurfaceHolder回调如何与Activity生命周期相关?

我一直在尝试实现一个需要在表面上进行相机预览的应用程序.在我看到事物时,活动和表面生命周期都包含以下状态:

  1. 当我第一次启动我的活动: onResume()->onSurfaceCreated()->onSurfaceChanged()
  2. 当我离开我的活动: onPause()->onSurfaceDestroyed()

在此方案中,我可以像打开/释放相机相应的调用和启动/停止在预览onPause/onResumeonSurfaceCreated()/onSurfaceDestroyed().

它工作正常,除非我锁定屏幕.当我启动应用程序时,然后锁定屏幕并在以后解锁它我看到:

onPause()- 屏幕锁定后没有别的 - 然后onResume()解锁后 - 之后没有表面回调.实际上,onResume()在按下电源按钮并且屏幕打开后调用,但是锁定屏幕仍然处于活动状态,因此,在活动变得均匀可见之前.

通过这种方案,我在解锁后得到一个黑屏,并且没有调用表面回调.

这是一个代码片段,不涉及相机的实际工作,而是SurfaceHolder回调.即使在我的手机上使用此代码,也会重现上述问题(按"后退"按钮时会以正常顺序调用回调,但在锁定屏幕时会丢失):

class Preview extends SurfaceView implements SurfaceHolder.Callback {

    private static final String tag= "Preview";

    public Preview(Context context) {
        super(context);
        Log.d(tag, "Preview()");
        SurfaceHolder holder = getHolder();
        holder.addCallback(this);
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder holder) {
        Log.d(tag, "surfaceCreated");
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        Log.d(tag, "surfaceDestroyed");
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { …
Run Code Online (Sandbox Code Playgroud)

camera android surfaceview

71
推荐指数
2
解决办法
4万
查看次数

Android刷新当前活动

我想编程我的Android应用程序来刷新它在ButtonClick上的当前活动.我在活动布局的顶部有一个按钮可以完成这项工作.当我点击按钮时,当前活动应该重新加载 - 就像设备重启一样.

谢谢

android

59
推荐指数
5
解决办法
23万
查看次数

如何调用recreate()?

我知道这可能非常简单,但我无法弄清楚.

我正在尝试在操作后重新加载/重新创建活动.我知道我可以使用:

Intent intent = getIntent();
finish();
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

但是在阅读网站上的答案时,我被告知在11 api之后使用'recreate()'.任何帮助将不胜感激,谢谢!

android android-activity

15
推荐指数
1
解决办法
2万
查看次数

使用recreate()方法和startActivity(getIntent())重新创建Activity之间的区别

我或多或少是android编程的初学者

我的问题来自这篇文章.

据我所知,主要有两种方法可以重新启动我所在的同一个Activity:

a)Activity.recreate()[在API 11之后添加]

b)

Intent intent = getIntent();
    finish();
    startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

这两个实际上如何工作?他们重新创建活动的过程有什么不同吗?

我相信这两个重新创建活动的方式之间肯定会有一些区别,因为我已经看到recreate()在我的活动中为视图添加了一些默认(垃圾?)值.此外,recreate()使用默认的黑色初始视图启动新活动

android android-activity

13
推荐指数
1
解决办法
9010
查看次数

如何重启android中的活动?

在我正在编写的应用程序中,有一部分可以让您更改窗帘设置.问题是,在重新创建活动之前,此设置不会生效.有没有办法告诉应用程序使用onResume()方法重新启动(希望允许它保存onSaveInstanceState()中的所有内容)?

android restart onresume android-activity

8
推荐指数
1
解决办法
4万
查看次数

使用intent重新启动当前活动

对于我正在开发的应用程序,我想使用intent重新启动当前活动.所以我在MainActivity.class中,我想使用以下内容重新启动MainActivity.class:

Intent intent = new Intent(getApplicationContext(), MainActivity.class);
Run Code Online (Sandbox Code Playgroud)

这会调用onDestroy()但不会重新启动活动.为什么这不起作用?

android launch android-intent android-activity

2
推荐指数
1
解决办法
4138
查看次数