Android将Service服务打包jar供三方调用
16lz
2021-01-23
这里记录一种比较特别简单的服务用法,android开发中将自己的后台服务打包JAR然后提供给三方使用,一般这种用法是比较小众化。最后附上DEMO
先创建一个后台服务(JAR包):
package com.ppx.adservice.librarydemo;import android.annotation.SuppressLint;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.os.Handler;import android.os.IBinder;import android.os.Message;import android.util.Log;import android.widget.Toast;public class MyService extends Service { private static final String TAG = "LZ"; MediaPlayer player; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { Toast.makeText(this, "My Service created", Toast.LENGTH_LONG).show(); Log.e(TAG, "onCreate");// player = MediaPlayer.create(this, R.raw.he);// player.setLooping(false); handler.postDelayed(task, 5000); } /** * 循环倒计时 */ private Runnable task = new Runnable() { public void run() { handler.postDelayed(this, 10 * 1000);//设置延迟时间,此处是5秒 Log.e(TAG, "我是服务,我还活着"); } }; @Override public void onDestroy() { Toast.makeText(this, "My Service Stoped", Toast.LENGTH_LONG).show(); Log.e(TAG, "onDestroy");// player.stop(); } @Override public void onStart(Intent intent, int startid) { Toast.makeText(this, "My Service Start", Toast.LENGTH_LONG).show(); Log.e(TAG, "onStart");// player.start(); } @SuppressLint("HandlerLeak") private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 1: break; default: break; } } };}
在注册清单中注册:
<?xml version="1.0" encoding="utf-8"?>
在build.gradle中添加:
task makeJar(type: Copy) { delete 'build/libs/myjar.jar'//执行前删除上一次的jar包 from('build/intermediates/bundles/release/')// //这句是导入库的目录,release可以换成debug into('build/libs/')//这句是导出到哪个目录,有时候build下面没有libs目录,可以自己创建 include('classes.jar') rename('classes.jar', 'myjar.jar')//mylibrary是导出jar文件的名字,可以换成自己的}// 在终端执行生成JAR包makeJar.dependsOn(build)
接下来就是打包步骤:
这里JAR包完毕。
最后就是将JAR包导入使用的项目Lib中,与其它jar包方式一样的引用.
调用:
Intent intent = new Intent(MainActivity.this, MyService.class); intent.setAction("android.intent.action.RESPOND_VIA_MESSAGE"); startService(intent);
这里在项目中注册清单中需要再次注册:
这样就OK了。
demo下载
-END
更多相关文章
- Android 源代码编后的目录分析
- Android Device Monitor无法查看data目录解决办法
- Android 读取sdcard指定目录文件
- Android:安装APK包以后系统文件目录的变化
- 64位Ubuntu配置android环境报错(...adb": error=2, 没有那个文件
- Android P 以及之后版本不支持同时从多个进程使用具有相同数据目
- android 后台长时间执行周期性定时任务 解决方案收集
- 【Android开发】Android应用程序目录结构