summaryrefslogtreecommitdiff
path: root/simpleperf/demo/SimpleperfExampleJava/app/src/main/java/simpleperf/example/java/MultiProcessActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'simpleperf/demo/SimpleperfExampleJava/app/src/main/java/simpleperf/example/java/MultiProcessActivity.java')
-rw-r--r--simpleperf/demo/SimpleperfExampleJava/app/src/main/java/simpleperf/example/java/MultiProcessActivity.java77
1 files changed, 77 insertions, 0 deletions
diff --git a/simpleperf/demo/SimpleperfExampleJava/app/src/main/java/simpleperf/example/java/MultiProcessActivity.java b/simpleperf/demo/SimpleperfExampleJava/app/src/main/java/simpleperf/example/java/MultiProcessActivity.java
new file mode 100644
index 00000000..25dc7965
--- /dev/null
+++ b/simpleperf/demo/SimpleperfExampleJava/app/src/main/java/simpleperf/example/java/MultiProcessActivity.java
@@ -0,0 +1,77 @@
+package simpleperf.example.java;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.Messenger;
+import android.os.RemoteException;
+import android.util.Log;
+
+public class MultiProcessActivity extends AppCompatActivity {
+ public static final String TAG = "MultiProcessActivity";
+ Messenger mService = null;
+ boolean mBound;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_multi_process);
+ bindService(new Intent(this, MultiProcessService.class), mConnection,
+ Context.BIND_AUTO_CREATE);
+ createBusyThread();
+ }
+
+ private ServiceConnection mConnection = new ServiceConnection() {
+ @Override
+ public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
+ mService = new Messenger(iBinder);
+ mBound = true;
+ Message message = new Message();
+ message.what = MultiProcessService.MSG_START_BUSY_THREAD;
+ try {
+ mService.send(message);
+ } catch (RemoteException e) {
+ Log.d(TAG, e.toString());
+ }
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName componentName) {
+ mService = null;
+ mBound = false;
+ }
+ };
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ if (mBound) {
+ unbindService(mConnection);
+ mBound = false;
+ }
+ }
+
+ void createBusyThread() {
+ new Thread(new Runnable() {
+ volatile int i = 0;
+
+ @Override
+ public void run() {
+ while (true) {
+ i = callFunction(i);
+ }
+ }
+
+ private int callFunction(int a) {
+ return a+1;
+ }
+ }, "BusyThread").start();
+ }
+} \ No newline at end of file