diff options
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.java | 77 |
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 |