AndroidStudio 编译异常java.lang.OutOfMemoryError: GC overhead limit exceed...
在build.gradle中的android{}添加如下脚本就可以顺利编译了 dexOptions { incremental true javaMaxHeapSize “4g” } 本文转自 一点点征服 博客园博客,原文链接:http://www.cnblogs.com/ldq2016/p/7804317.html,如需转载请自行联系原作者
一、适用场景:client进程必须是Activity,服务端进程必须是Service
二、基于:Activity跟Service绑定
三、问题:在Activity中可以得到的Binder对象,但是无法获得具体类型
四、使用步骤:
(一)Service中创建Binder对象
(二)创建aidl文件(接近interface)
1. 在服务端创建一个interface,方法为MyBinder中的方法
2. 把接口文件扩展名修改为“aidl”,并删除interface之前的public修饰符
3. 将aidl文件拷贝到客户端同样包名中
4. 在服务端将MyBinder继承的Binder修改为aidl文件名.Stub
5. 在客户端的onServiceConected()方法中
通过IMyBinder binder = IMyBinder.Stub.asInterface(service);
得到binder
服务端service:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import
com.ex03.aidl.IMyBinder;
import
android.app.Service;
import
android.content.Intent;
import
android.os.Binder;
import
android.os.IBinder;
import
android.util.Log;
public
class
MyService
extends
Service
{
private
String play()
{
return
"播放音乐"
;
}
private
String pause()
{
return
"暂停音乐"
;
}
public
class
MyBind
extends
IMyBinder.Stub
{
public
String play()
{
return
MyService.
this
.play();
}
public
String pause()
{
return
MyService.
this
.pause();
}
}
private
IBinder bind =
new
MyBind();
@Override
public
IBinder onBind(Intent intent)
{
return
bind;
}
}
|
客户端Activity:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
import
com.ex03.aidl.IMyBinder;
//服务端添加aidl文件后,复制到客户端,并导入包
import
android.os.Bundle;
import
android.os.IBinder;
import
android.os.RemoteException;
import
android.app.Activity;
import
android.content.ComponentName;
import
android.content.Intent;
import
android.content.ServiceConnection;
import
android.util.Log;
import
android.view.Menu;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.TextView;
public
class
MainActivity
extends
Activity
implements
OnClickListener
{
IMyBinder bind =
null
;
TextView textView =
null
;
private
ServiceConnection conn =
new
ServiceConnection()
{
@Override
public
void
onServiceDisconnected(ComponentName name)
{
}
@Override
public
void
onServiceConnected(ComponentName name, IBinder service)
{
bind = IMyBinder.Stub.asInterface(service);
//通过此方法得到IBinder对象类型
}
};
@Override
protected
void
onCreate(Bundle savedInstanceState)
{
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_client_play).setOnClickListener(
this
);
findViewById(R.id.btn_client_pause).setOnClickListener(
this
);
findViewById(R.id.button3).setOnClickListener(
this
);
textView = (TextView) findViewById(R.id.textView1);
}
@Override
public
boolean
onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main, menu);
return
true
;
}
@Override
public
void
onClick(View v)
{
switch
(v.getId())
{
case
R.id.btn_client_play:
btnPlayClick();
break
;
case
R.id.btn_client_pause:
btnPauseClick();
break
;
case
R.id.button3:
btnBindClick();
break
;
default
:
break
;
}
}
private
void
btnBindClick()
//点击启动服务
{
Intent service =
new
Intent(
"com.ex03.ipc.aidl"
);
bindService(service , conn, BIND_AUTO_CREATE);
}
private
void
btnPauseClick()
//点击暂停音乐
{
try
{
textView.setText(bind.pause());
}
catch
(RemoteException e)
{
e.printStackTrace();
}
}
private
void
btnPlayClick()
//点击播放音乐
{
try
{
textView.setText(bind.play());
}
catch
(RemoteException e)
{
e.printStackTrace();
}
}
}
|
微信关注我们
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。
Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。
Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。