当前位置: 首页 > 面试题库 >

获取活动实例

关苗宣
2023-03-14
问题内容

请问一个简单的问题,我完全是Java和android开发人员的初学者。调用surfaceChanged时,如何在setCameraDisplayOrientation中获取Activity的实例?

public class MyActivity extends Activity
{
    private Camera mCamera;
    private CameraPreview mPreview;
    public final int cameraId = 0;
    public Activity activity = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    activity = this;

        // Create an instance of Camera
        mCamera = getCameraInstance();

        // Create our Preview view and set it as the content of our activity.
        mPreview = new CameraPreview(this, mCamera);
        FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
        preview.addView(mPreview);
    }

    public void setCameraDisplayOrientation(Activity activity,
                        int cameraId, android.hardware.Camera camera) {

    }

    public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
    private SurfaceHolder mHolder;
    private Camera mCamera;
    ...
    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        ...
        setCameraDisplayOrientation(activity, cameraId, mCamera);
        ....
    }
    }
}

问题答案:

这是一种使用静态变量避免内存泄漏的方法:静态引用将在onCreate(Bundle)方法中设置的Activity实例。

  1. 在您的中学班级中写下如下内容:

    public Class SecondClass {
    private static WeakReference<Activity> mActivityRef;
    public static void updateActivity(Activity activity) {
        mActivityRef = new WeakReference<Activity>(activity);
    }
    
  2. 然后在Activity类的onCreate(Bundle)方法中:

        @Override
    onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SecondClass.updateActivity(this);
        ...
    }
  1. 通过以下方式使用活动实例:
    mActivityRef.get()
    


 类似资料:
  • 库中有一个从javascript(html5应用程序)调用的类。它不能是活动扩展器。该类可以访问活动和WebView对象。 是否可以从这个库类中获取onResume、on暂停和onDestroy活动事件?

  • 我的计算机上有多个网卡。(因为VMWare) 如何找到活动卡的IPv4地址。我的意思是,如果我在终端中发送ping并在WireShark中拦截数据包,我需要“Source”的地址。 我想过检查每个网络接口,看看GateWay是空还是空?或者可能ping127.0.0.1并获取ping请求的IP源?但无法实现它。 现在我有这个代码,我在StackOverFlow上找到的 但它给了我VmWare卡的I

  • 我正在试图弄清楚目前有多少连接被打开,但我似乎找不到一个明显的方法来使用Hikari实现这一点。 公开了这些信息(),但我没有看到从访问这些信息的简单方法。

  • 问题内容: 我试图用Java升级我的应用程序,使其仅在具有特定名称的进程窗口处于活动状态时才能工作。我发现使用JNI可以做到这一点,但是我不知道该怎么做。我只是找不到任何可以解释它的描述或示例。我的问题是- 如何获取Windows中当前活动窗口的进程名称(通过JNI或其他方式-我接受任何其他解决方案)? 问题答案: 减轻您的痛苦,并使用JNA。您将需要下载 Win32 API的 jna.jar 和

  • 问题内容: 在我的控制器中,当我需要活动(登录)用户时,我正在执行以下操作以获取UserDetails实现: 它工作正常,但我认为Spring在这种情况下可以使生活更轻松。有没有办法将自动接线连接到控制器或方法中? 例如,类似: 但是我得到了,而不是得到了? 我正在寻找一种优雅的解决方案。有任何想法吗? 问题答案: 序言:从Spring-Security 3.2开始,此答案的末尾描述了一个不错的注

  • 目前,我正在使用电子邮件确认的用户注册表单。 我已经设法启动我的应用程序使用链接在电子邮件,但我不知道如何获得链接的用户点击启动我的应用程序。