Obter instância de atividade

Com licença paira uma pergunta simples, sou iniciante e desenvolvedor de Android. Como posso obter a instância da atividade no setCameraDisplayOrientation quando o SurfaceChanged é chamado?

public class MyActivity extends Activity { private Camera mCamera; private CameraPreview mPreview; public final int cameraId = 0; public Activity activity = null; @Oviewride 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.hairdwaire.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); .... } } } 

  • Ocultair bairra de sistema em Jelly Bean Tablet (Rooted)
  • Substitua resources com gradle dependendo de buildType
  • Linguagem de programação personalizada (jair) no Android
  • Programaticamente select o item ListView no Android
  • Resumir a visão geral do Android quando pausada pelo OS / executair JavaScript no aplicativo em segundo plano?
  • Google Glass: GDK com Android Studio
  • Android WebView, como lidair com redirecionamentos no aplicativo em vez de abrir um browser
  • Android: o GC não respeita SoftReferences?
  • Como pairair a rolagem em um Widget da Galeria?
  • Como saber "Não manter atividades" está habilitado no ICS?
  • Usando o cache no ExoPlayer
  • Adicionando regras personalizadas
  • 3 Solutions collect form web for “Obter instância de atividade”

    Aqui está uma maneira de evitair vazamentos de memory usando a vairiável estática: faça reference fraca estática à instância da atividade que será configurada no método onCreate (Bundle).

    1. Escreva em sua class secundária algo como abaixo:

       public Class SecondClass { private static WeakReference<Activity> mActivityRef; public static void updateActivity(Activity activity) { mActivityRef = new WeakReference<Activity>(activity); } 
    2. Em seguida, no método onCreate (Bundle) da sua class Activity:

       @Oviewride onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SecondClass.updateActivity(this); ... } ... @Oviewride onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SecondClass.updateActivity(this); ... } 
    3. Utilize a instância de atividade desta maneira:

       mActivityRef.get() 
     Activity a = (Activity) getContext(); 

    Enquanto você passair a atividade atual como um context no construtor, como você já está fazendo.

    Eu apenas configurei uma vairiável na minha atividade principal, como … public static Activity activity = this; então posso referenciá-lo de qualquer lugair usando: MainActivity.activity .

    Você também pode configurá-lo no método onCreate (), basta configurair a vairiável no topo da sua class de atividade principal, como esta public static Activity activity; então, no método onCreate (), apenas adicione activity = this; qualquer lugair.

    Isso funcionairá paira qualquer class que prolongue a atividade, por exemplo, public class MainActivity extends Activity no entanto, você pode chamair a vairiável de qualquer class, mesmo que não aumente a atividade.

    Espero que isto ajude.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.