import java.io.File;
import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.Date;
import android.app.Activity;
import android.content.Context;
public static final String QUAL_NAME_KEY = "qualName";
public static final String RESULT_KEY = "result";
+ private BaseApp taskApp;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DexClassLoader cl = loadDex(new File(getDir("apks",
Context.MODE_PRIVATE).getPath(), apkName));
Class<?> klass = cl.loadClass(qualName);
- Log.d(TAG, "Successfully loaded " + qualName);
- Constructor<?> ctor = klass.getConstructor();
- Object task = ctor.newInstance();
- Method meth = klass.getMethod("createView", Context.class);
- View view = (View) meth.invoke(task, this);
+ Log.d(TAG, "Successfully loaded " + klass.getName());
+
+ taskApp = (BaseApp) klass.newInstance();
+ taskApp.setSender(new ResultSender() {
+ @Override
+ public void send(int[] results) {
+ Log.d(TAG, "send: " + results[0]);
+ }
+ });
+ taskApp.setCloseRequester(new CloseRequester() {
+ @Override
+ public void close() {
+ closeApp();
+ }
+ });
+ View view = taskApp.createView(this, getResources());
Log.d(TAG, "Successfully created view of " + qualName);
setupLayout(view);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- setResponse(new Date().getSeconds());
- finish();
+ closeApp();
}
});
}
+ private void closeApp() {
+ taskApp.onClose();
+ setResponse(0);
+ finish();
+ }
+
private DexClassLoader loadDex(File dexFile) throws IOException {
File odexDir = getDir("odex", Context.MODE_PRIVATE);
return new DexClassLoader(dexFile.getAbsolutePath(),
package jp.ac.titech.sharp4k.cuten.sampletask;
-import android.content.Context;
+import java.util.Date;
+import jp.ac.titech.sharp4k.cuten.BaseApp;
+import android.content.Context;
+import android.content.res.Resources;
import android.view.View;
-
import android.widget.TextView;
-public class Hello3Task {
- public Hello3Task() {
- }
-
- public View createView(Context ctx) {
+public class Hello3Task extends BaseApp {
+ @Override
+ protected View createView(Context ctx, Resources res) {
TextView tv = new TextView(ctx);
tv.setText("hello3task");
+ int[] results = { new Date().getSeconds(), 0, 0 };
+ sendResult(results);
return tv;
}
}