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业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。
Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。
WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。