android动态加载service,android,service_请问android app如何启动DexClassLoader动态加载的jar包中定义的service,android,servi...

请问android app如何启动DexClassLoader动态加载的jar包中定义的service

架构需求就是这样,Service类定义在一个Jar包插件,通过网络下载或者push到SD卡中,然后要求Service在新进程中启动。

运行时出现找不到Service类的错误,然后程序错误崩溃:

Caused by: java.lang.ClassNotFoundException: Didn't find class JarService

贴个简单代码示例吧

主Activity就是load SD卡上的jar包,反射获取类名,intent启动service

public class MainActivity extends ActionBarActivity {

private final String TAG = "MainActivity";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Log.i(TAG, "onCreate");

ClassLoader dexLoader = new DexClassLoader("/sdcard/jarservicetest.jar", getCacheDir().getAbsolutePath(), null, getClassLoader());

//ClassLoader dexLoader = getClassLoader();

try {

Log.i(TAG, "try");

Class> activityClass = dexLoader.loadClass("com.example.jarservicetest.JarService");

Intent intent = new Intent(this, activityClass);

startService(intent);

} catch (ClassNotFoundException e) {

Log.i(TAG, "catch");

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

Service就一空壳

public class JarService extends Service{

private final String TAG = "JARSERVICE";

@Override

public void onCreate() {

// TODO Auto-generated method stub

Log.i(TAG, "onCreate");

super.onCreate();

}

@Override

public void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

}

@Override

public IBinder onBind(Intent arg0) {

// TODO Auto-generated method stub

return null;

}

}

Manifest文件中声明了Service

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name=".MainActivity"

android:label="@string/app_name" >

请教达人们,面对这种需求,有啥解决办法?

相关阅读:

intellij idea这里mapping为什么只有一行显示?

node端的缓存策略

php设置中文cookie,读取echo出来乱码,写进mysql又没有乱码,为什么?

WSAGetLastError返回-1是什么意思?

js匿名函数作用域问题

.uim和.line是什么文件,怎么样可以打开?

js同级特定元素获取

请问我现在用的iOS AFNetWorking 3.0版本,有没有什么办法使用七牛的SDK?

Javascript是单线程的么

git分支模型的疑问

js中创建一个function的2种方法哪个好?

一些大规模的 C++ 项目是如何构建的?

用hexo搭建的github博客,hexo d之后报错

页面高度自适应的浏览器兼容如何解决?

如何在onResp里区分不同的微信分享

关于 RESTful 的 「API 文档」

在canvas上画图添加缩放功能如何以鼠标指针的坐标为缩放中心

gulp-sass经常报文件未找到

hdfs如何远程访问?

为什么使用setTimeout()后要clearTimeout()?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值