@InstanceState
在onSaveInstanceState(Bundle)里保存值,在onCreate(Bundle)中读取值。
原来代码我们这样写
@EActivity(R.layout.activity_test)
public class TestActivity extends Activity {
int tesa;
@Override
public void onSaveInstanceState(Bundle bundle) {
super.onSaveInstanceState(bundle);
bundle.putInt("tesa", tesa);
}
public void onCreate(Bundle savedInstanceState)
{
restoreSavedInstanceState_(savedInstanceState);
}
private void restoreSavedInstanceState_(Bundle savedInstanceState) {
if (savedInstanceState == null) {
return ;
}
tesa = savedInstanceState.getInt("tesa");
}
}
现在代码这样写就可以了
@EActivity(R.layout.activity_test)
public class TestActivity extends Activity {
@InstanceState
int tesa;
}
@WindowFeature
你可以用 @WindowFeature 自定义 activity 窗口的功能。标注值允许有一个或多个。
示例代码
@WindowFeature({ Window.FEATURE_NO_TITLE, Window.FEATURE_INDETERMINATE_PROGRESS })
@EActivity(R.layout.activity_test)
public class TestActivity extends Activity {
}
@NoTitle
这个是说明窗口没有Title,在3.0之后就不能用了。3.0以后用上面那个注解就可以实现了
@Fullscreen
这个说明窗口是一个全屏窗口
示例代码
@Fullscreen
@EActivity(R.layout.activity_test)
public class TestActivity extends Activity {
}
@CustomTitle
这个注解将窗口设置为 window.feature_custom_title 这样窗口类型,并将其设置为指定的布局ID。
@CustomTitle(R.layout.custom_title)
@EActivity(R.layout.activity_test)
public class TestActivity extends Activity {
}
@WakeLock
简易的获取WakeLock的方法
@CustomTitle(R.layout.custom_title)
@EActivity(R.layout.activity_test)
public class TestActivity extends Activity {
@WakeLock(tag = "MyTag", level = WakeLock.Level.FULL_WAKE_LOCK, flags = WakeLock.Flag.ACQUIRE_CAUSES_WAKEUP)
void methodWithWakeLock(String aParam, long anotherParam) {
[...]
}
}
使用这个注解要是AndroidManifest.xml文件中增加下面的权限
<uses-permission android:name="android.permission.WAKE_LOCK" />
@IgnoredWhenDetached
在@EFragment里,使用@UiThread 或 @Background 注解时,加上这个注解如判读父activity 是否存在。
应使用的方法,必须满足以下条件:
只能在@EFragment 中使用
注解的方法返回值必须void,可以包含参数。
注解的方法返回值必须void,可以包含参数。
示例代码
@EFragment
public class LoaderFragment extends Fragment {
@UiThread
@IgnoredWhenDetached
void killActivity() {
getActivity().finish();
}
@IgnoredWhenDetached
void updateTitle(String title) {
getActivity().setTitle(title);
}
@UiThread
void test(){
}
}
@HierarchyViewerSupport
引入 Hierarchy Viewer 支持
这个@HierarchyViewerSupport 注解允许你在任何设备上使用 Hierarchy Viewer 检查工具。
使用此批注,您的应用程序必须在 AndroidManifest.xml 文件中设置 INTERNET 权限 和 android:debuggable 为 true。
请注意,使用非常简单,你只需在你的activity上加上@HierarchyViewerSupport
@HierarchyViewerSupport
@EActivity
public class MyActivity extends Activity {
}
@OnActivityResult
在没有这个注解之前,我们接收一个Activity的返回值时,要这么写代码
@EActivity(R.layout.activity_test)
public class TestActivity extends Activity {
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
//可以根据多个请求代码来作相应的操作
if(100==requestCode)
{
String bookname=data.getExtras().getString("bookname");
String booksale=data.getExtras().getString("booksale");
Toast.makeText(this, "名称:"+bookname+"价格+booksale+"元", Toast.LENGTH_LONG).show();
}
super.onActivityResult(requestCode, resultCode, data);
}
}
有了这个标注后,我们可以这样写
@EActivity(R.layout.activity_test)
public class TestActivity extends Activity {
@OnActivityResult(100)
void onResult(@Extra String bookname, @Extra String booksale) {
Toast.makeText(this, "名称:"+bookname+"价格"+booksale+"元", Toast.LENGTH_LONG).show();
}
}
该方法可以有多个参数:
Activity 返回的数据
int或java.lang.Integer中得到resultCode
@Transactional
@Transactional注解表明一个Activity的方法是事务性的,因此,在执行该方法之前,事务将被启动,并随后提交。
如果方法抛出 RuntimeException ,该交易将回滚。
该方法必须具有至少一个参数,它必须是一个SQLiteDatabase。
该方法不能是私有的,抛出其他异常。
使用示例:
@EActivity(R.layout.activity_test)
public class TestActivity extends Activity {
@Transactional
void doSomeDbWork(SQLiteDatabase db) {
db.execSQL("Some SQL");
}
}
@Trace
该@Trace注释允许您通过写日志条目来跟踪方法的执行。
该方法不能是私有的。
示例代码
@EActivity(R.layout.activity_test)
public class TestActivity extends Activity {
@Click(R.id.bt_one)
@Trace(tag="CustomTag", level=Log.WARN)
void c(){
tesa = 123456;
ttt(123,"456");
}
@Trace
void ttt(int a, String b){
}
}
当然,也可以在这个注解中设置参数。
运行这种程序,点击bt_one这个按键,出打印出如下信息:
01-29 15:01:03.254: W/CustomTag(2350): Entering [void c()]
01-29 15:01:03.254: I/TestActivity(2350): Entering [void ttt(a = 123, b = 456)]
01-29 15:01:03.254: I/TestActivity(2350): Exiting [void ttt(int, String)], duration in ms: 0
01-29 15:01:03.254: W/CustomTag(2350): Exiting [void c()], duration in ms: 2
你要在你的程序中使用这个注解,还要进行如下设置
收eclipse 为例:Project Properties > Java Compiler > Annotation Processing > Processor options > 新建一个 key 为trace, value 为 false