【Android】Android 多任务配置

前言

本篇文章是为了了解安卓中的多任务系统,了解安卓中Task的栈结构,以及怎么配置app的多任务,模仿微信小程序。

多任务配置

在安卓手机上,当我们打开微信小程序,可以看到小程序其实是一个独立的任务,这是怎么配置的呢。

其实很简单,我们只需要在安卓项目的配置文件中,对Activity进行以下配置即可

 <activity
            android:name=".MainActivity2"
            android:launchMode="singleTask"
           android:taskAffinity="com.demo.myapplication.task2" /> 

重点在这两行代码,缺一不可。

android:launchMode="singleTask"
android:taskAffinity="com.demo.myapplication.task2" 

launchMode很常见,是启动模式的一种,singleTask代表单独在一个栈中,taskAffinity就是当前的Activity所属的栈。

taskAffinity属性很少见,它实际上是有个默认值,当不指定Activity的taskAffinity时,它会先查找application标签中的值,如果application中也不存在,就会使用配置文件中的包名(package)

在安卓手机上的任务管理器中会根据taskAffinity区分不同的任务,所以我们配置很多taskAffinity,就能在手机的任务管理器中看到很多的任务。

还有另外一种动态配置的方法,可以达到同样的效果:

Intent intent = new Intent(this, MainActivity2.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent); 

高级配置

  • 换名称

微信中的小程序是不同的名字。可以这样设置 在Activity中进行设置:

setTaskDescription(new ActivityManager.TaskDescription("任务名")); 

另一种方法在配置文件中进行设置。

 <activity
            android:name=".MainActivity2"
            android:label="任务名"
            /> 
  • 换图标

任务管理器中显示的图标样式。如果不设置,就和宿主的是一样的图标。

if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
    setTaskDescription(new ActivityManager.TaskDescription("任务名", bitmap));
} 

同样的效果,也可以在配置文件中进行设置

 <activity
            android:name=".MainActivity2"
            android:icon="@drawable/setting"
            /> 

注意:名称和图标的更改如果不单独设置,就会同步app的名称和图标。

最后

愿你有一天,真爱自己,善待自己。

本文在开源项目:在下方二维码中已收录,如何面试拿高薪中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 下载OpenCV库 首先,你需要下载OpenCV库。你可以从官网下载最新版本的OpenCV库,也可以从GitHub上下载最新的开发版本。 2. 安装OpenCV库 下载完成后,你需要将OpenCV库安装到你的计算机上。安装过程可能会因操作系统而异,但通常情况下,你只需要按照安装向导的指示进行操作即可。 3. 配置Android Studio 打开Android Studio,创建一个新项目。在项目中,你需要添加OpenCV库的引用。为此,请按照以下步骤操作: - 在项目的build.gradle文件中添加以下代码: ``` dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'org.opencv:opencv-android:3.4.1' } ``` - 在AndroidManifest.xml文件中添加以下代码: ``` <uses-permission android:name="android.permission.CAMERA" /> ``` - 在MainActivity.java文件中添加以下代码: ``` import org.opencv.android.OpenCVLoader; public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 { private CameraBridgeViewBase mOpenCvCameraView; static { if (!OpenCVLoader.initDebug()) { // Handle initialization error } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.camera_view); mOpenCvCameraView.setCvCameraViewListener(this); } @Override public void onResume() { super.onResume(); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_4_1, this, mLoaderCallback); } private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: mOpenCvCameraView.enableView(); break; default: super.onManagerConnected(status); break; } } }; @Override public void onPause() { super.onPause(); if (mOpenCvCameraView != null) { mOpenCvCameraView.disableView(); } } @Override public void onDestroy() { super.onDestroy(); if (mOpenCvCameraView != null) { mOpenCvCameraView.disableView(); } } @Override public void onCameraViewStarted(int width, int height) { } @Override public void onCameraViewStopped() { } @Override public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) { Mat gray = inputFrame.gray(); return gray; } } ``` 这段代码将初始化OpenCV库,并在CameraView中显示灰度图像。 4. 运行应用程序 现在,你可以运行你的应用程序并测试它是否正常工作。如果一切正常,你应该能够看到一个显示灰度图像的CameraView。 以上就是Android Studio配置OpenCV的基本步骤。当然,如果你需要更高级的功能,你可能需要更多的配置和代码。但是,这些基本步骤应该足以让你开始使用OpenCV了。 ### 回答2: OpenCV是一个开源的计算机视觉库,其中包含各种图像处理和计算机视觉算法。我们可以将其集成到Android应用程序中,以用于各种图像处理任务。 为了在Android Studio中配置OpenCV,以下是需要执行的步骤: 1. 下载OpenCV库文件 在 https://opencv.org/releases/ 下载适合你的环境版本的OpenCV库文件,然后解压到一个文件夹下。 2. 在Android Studio中添加OpenCV依赖项 在build.gradle(Module:app)文件中添加以下代码,其中/path/to/opencv/libs应该指向你之前解压的OpenCV库的libs目录: ```java dependencies { implementation files('/path/to/opencv/libs/opencv_java4.jar') } ``` 3. 在AndroidManifest.xml文件中添加权限 ```java <uses-permission android:name="android.permission.CAMERA" /> ``` 4. 在Java代码中加载和使用OpenCV库 在MainActivity.java类中添加以下代码以加载OpenCV库: ```java public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 { static { System.loadLibrary("opencv_java4"); } //rest of your code } ``` 5. 测试OpenCV库配置是否成功 启动应用程序,如果一切顺利,你会看到通过相机预览显示的实时图像,并且应用程序将能够使用OpenCV库进行图像处理和计算机视觉任务。 以上是在Android Studio中配置OpenCV库的基本步骤。使用OpenCV库,你可以实现图像分割、特征检测、目标追踪等计算机视觉应用程序,使你的Android应用程序更加出色。 ### 回答3: 为了在Android Studio中使用OpenCV,需要进行以下几个步骤: 1. 下载OpenCV的Android SDK。 去OpenCV官方网站https://opencv.org/releases/下载所需版本的SDK,然后解压到本地目录。 2. 在Android Studio中创建一个新项目。 在创建项目的过程中,选择“Empty Activity”,并将项目命名为“OpenCVDemo”。 3. 配置项目的build.gradle文件。 在项目的根目录下的build.gradle文件中添加以下内容: ```java // Add this line to the repository section maven { url "https://opencv.org/releases" } // Add this line to the dependencies section implementation 'org.opencv:opencv-android:3.4.1' ``` 这将在项目中添加OpenCV的依赖关系。 4. 将OpenCV库添加到项目中。 从OpenCV的Android SDK中找到libopencv_java3.so文件,并将其拷贝到项目的libs目录中。 5. 配置AndroidManifest.xml文件。 在此文件中,添加以下内容: ```xml <uses-permission android:name="android.permission.CAMERA" /> <application> <activity android:name=".MainActivity" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <uses-library android:name="org.opencv.engine" android:required="false" /> </application> ``` 这样可以请求使用相机权限,并添加OpenCV引擎库。 6. 配置MainActivity文件。 将MainActivity文件中的内容替换为以下内容: ```java import org.opencv.android.OpenCVLoader; public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2 { private CameraBridgeViewBase mOpenCvCameraView; private Mat mRgba; private Mat mGray; static { if (!OpenCVLoader.initDebug()) { Log.d("MainActivity", "OpenCV not loaded"); } else { Log.d("MainActivity", "OpenCV loaded"); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.activity_main); mOpenCvCameraView = findViewById(R.id.JavaCameraView); mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); mOpenCvCameraView.setCvCameraViewListener(this); } @Override public void onResume() { super.onResume(); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, this, mLoaderCallback); } @Override public void onPause() { super.onPause(); if (mOpenCvCameraView != null) mOpenCvCameraView.disableView(); } public void onDestroy() { super.onDestroy(); if (mOpenCvCameraView != null) mOpenCvCameraView.disableView(); } public void onCameraViewStarted(int width, int height) { mRgba = new Mat(height, width, CvType.CV_8UC4); mGray = new Mat(height, width, CvType.CV_8UC1); } public void onCameraViewStopped() { mRgba.release(); mGray.release(); } public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) { mRgba = inputFrame.rgba(); Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_RGBA2GRAY); return mGray; } private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { Log.i("MainActivity", "OpenCV loaded successfully"); mOpenCvCameraView.enableView(); break; } default: { super.onManagerConnected(status); break; } } } }; } ``` 这里包括了初始化OpenCV库并加载相机视野中每帧的图像,以及对该图像进行灰度处理的操作。 7. 运行项目 运行项目并查看输出。如果成功加载OpenCV库,则应看到“OpenCV loaded successfully”的消息。 以上就是在Android Studio中配置OpenCV的步骤。随着版本的更新,一些小变化可能会发生。但是,总体上来说,这是一个简单的过程,并且可以获取许多有用的功能和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值