1,如何共享Activity中的数据
首先你如果想在整个应用中使用某个数据,在java中一般是使用静态变量的方式,而在android中有个更优雅的方式是使用Application context。
每个Activity 都是Context,其包含了其运行时的一些状态,android保证了其是single instance的。
方法是创建一个属于你自己的android.app.Application的子类,然后在manifest中申明一下这个类,这是android就为此建立一个全局可用的实例,你可以在其他任何地方使用Context.getApplicationContext()方法获取这个实例,进而获取其中的状态(变量)。
2,举例
package com.pili.pldroid.streaming.camera.demo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import com.pili.pldroid.streaming.CameraStreamingManager;
import com.pili.pldroid.streaming.CameraStreamingManager.EncodingType;
import com.pili.pldroid.streaming.WatermarkSetting;
import com.pili.pldroid.streaming.widget.AspectFrameLayout;
/**
* Created by jerikc on 15/10/29.
*/
public class SWCodecCameraStreamingActivity extends StreamingBaseActivity {
private static final String TAG = "SWCodecCameraStreaming";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AspectFrameLayout afl = (AspectFrameLayout) findViewById(R.id.cameraPreview_afl);
afl.setShowMode(AspectFrameLayout.SHOW_MODE.REAL);
CameraPreviewFrameView cameraPreviewFrameView =
(CameraPreviewFrameView) findViewById(R.id.cameraPreview_surfaceView);
cameraPreviewFrameView.setListener(this);
WatermarkSetting watermarksetting = new WatermarkSetting(this, R.drawable.qiniu_logo, WatermarkSetting.WATERMARK_LOCATION.SOUTH_WEST, WatermarkSetting.WATERMARK_SIZE.MEDIUM, 100);
mCameraStreamingManager = new CameraStreamingManager(this, afl, cameraPreviewFrameView,
EncodingType.SW_VIDEO_WITH_SW_AUDIO_CODEC); // sw codec
mCameraStreamingManager.prepare(mCameraStreamingSetting, mMicrophoneStreamingSetting, watermarksetting, mProfile);
mCameraStreamingManager.setStreamingStateListener(this);
mCameraStreamingManager.setSurfaceTextureCallback(this);
mCameraStreamingManager.setStreamingSessionListener(this);
mCameraStreamingManager.setStreamStatusCallback(this);
// update the StreamingProfile
setFocusAreaIndicator();
}
}
这个效果就是使用静态变量是一样的,但是其更符合android的架构体系。
注意APP必须在manifest注册(
<application
android:allowBackup="true"
android:name=".StreamingApplication" //此处即是
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
当你创建一个空白页的时候,同样的情况
class SWCameraStreamingActivity extends Activity
这个句式去集成了父类的情况
随后就可以复写方法进行实现了
@Override
protected void onResume()
{
super.onResume();
mCameraStreamingManager.resume();
}
@Override
protected void onPause(){
super.onPause();
mCameraStreamingManager.pause();
}