Android applications are composed of reusable components like activities and services. These components have lifecycles that are managed by the Android system and can span multiple processes. Inter-process communication allows components in different processes to communicate securely through mechanisms like Binder and parcelables. Resource management across processes helps ensure efficiency and responsiveness through process isolation and memory optimizations.
[2012 CodeEngn Conference 07] 퍼다우크 - Manual UnPack by DebuggerGangSeok Lee
2012 CodeEngn Conference 07
실행압축 툴의 본래 취지는 크게 크래커로부터 개발자들의 소프트웨어를 보호하고 온라인 상으로 전송되는 바이너리의 크기를 줄여주는 순기능 역할과 악성코드나 불법적인 바이너리의 내용이나 분석을 어렵게 만드는 역기능 역할의 양면성이 존재한다. 학문적인 접근으로, 실행압축에 대한 리버스엔지니어링 도전은 더 나은 소프트웨어에 대한 발전과 더불어 안전한 소프트웨어 산업 발전을 증진시키는 촉매제 역할을 할 수 있다고 본다. Themida와 UPX 알고리즘을 디버거로 따라가면서 살펴보는 것은 리버시엔지니어에게 안티디버깅을 비롯하여 가상화, 다형성 등의 원리를 이해하고 공부하는데 많은 도움을 줄 것으로 기대한다.
http://codeengn.com/conference/07
[2012 CodeEngn Conference 07] 퍼다우크 - Manual UnPack by DebuggerGangSeok Lee
2012 CodeEngn Conference 07
실행압축 툴의 본래 취지는 크게 크래커로부터 개발자들의 소프트웨어를 보호하고 온라인 상으로 전송되는 바이너리의 크기를 줄여주는 순기능 역할과 악성코드나 불법적인 바이너리의 내용이나 분석을 어렵게 만드는 역기능 역할의 양면성이 존재한다. 학문적인 접근으로, 실행압축에 대한 리버스엔지니어링 도전은 더 나은 소프트웨어에 대한 발전과 더불어 안전한 소프트웨어 산업 발전을 증진시키는 촉매제 역할을 할 수 있다고 본다. Themida와 UPX 알고리즘을 디버거로 따라가면서 살펴보는 것은 리버시엔지니어에게 안티디버깅을 비롯하여 가상화, 다형성 등의 원리를 이해하고 공부하는데 많은 도움을 줄 것으로 기대한다.
http://codeengn.com/conference/07
Conf soat tests_unitaires_Mockito_jUnit_170113SOAT
Vous subissez les régressions à chaque livraison ? Vous ne voyez pas l’intérêt des tests unitaires car ils ne servent qu’à tester des additions ? Si c’est le cas, suivez David dans la quête du Test Driven Development. Nous rencontrerons pléthore d'ennemies contre lesquels nous aurons à combattre : bugs, complexité, code statique, couplage fort. Ils essaieront de nous barrer la route, mais heureusement, nous pourrons compter sur nos alliés jUnit, Mockito, refactoring et injection/dépendance
Making Java more dynamic: runtime code generation for the JVMRafael Winterhalter
While Java’s strict type system is a great help for avoiding programming errors, it also takes away some of the flexibility that developers appreciate when using dynamic languages. By using runtime code generation, it is possible to bring some of this flexibility back to the Java virtual machine. For this reason, runtime code generation is widely used by many state-of-the-art Java frameworks for implementing POJO-centric APIs but it also opens the door to assembling more modular applications. This presentation offers an introduction to the complex of runtime code generation and its use on the Java platform. Furthermore, it discusses the up- and downsides of several code generation libraries such as ASM, Javassist, cglib and Byte Buddy.
This Presentation is targeting for deep knowledge of android OS that cover below topics:
History
Architecture
Dalvik Virtual Machine(DVM)
Process Management
Memory Management
Application and Service Lifecycle
These are the slides to a talk I gave at Pittsburgh techFest 2012. The topic was an overview of the Node.js framework, and how you can use it to build amazing things.
* See more of my work at http://www.codehenge.net
This presentation on Android OS contains basic and core concepts of Android Operation System, like Android Architecture, Dalvik Virtual Machine, Process Management, Memory Management, Application and Service life cycle, etc...
Has the traditional intro to event looped servers (thanks Ryan!) with a couple of examples of why I think node.js is particularly exciting today. Code for the demos can be found at https://github.com/davidpadbury/node-intro.
Conf soat tests_unitaires_Mockito_jUnit_170113SOAT
Vous subissez les régressions à chaque livraison ? Vous ne voyez pas l’intérêt des tests unitaires car ils ne servent qu’à tester des additions ? Si c’est le cas, suivez David dans la quête du Test Driven Development. Nous rencontrerons pléthore d'ennemies contre lesquels nous aurons à combattre : bugs, complexité, code statique, couplage fort. Ils essaieront de nous barrer la route, mais heureusement, nous pourrons compter sur nos alliés jUnit, Mockito, refactoring et injection/dépendance
Making Java more dynamic: runtime code generation for the JVMRafael Winterhalter
While Java’s strict type system is a great help for avoiding programming errors, it also takes away some of the flexibility that developers appreciate when using dynamic languages. By using runtime code generation, it is possible to bring some of this flexibility back to the Java virtual machine. For this reason, runtime code generation is widely used by many state-of-the-art Java frameworks for implementing POJO-centric APIs but it also opens the door to assembling more modular applications. This presentation offers an introduction to the complex of runtime code generation and its use on the Java platform. Furthermore, it discusses the up- and downsides of several code generation libraries such as ASM, Javassist, cglib and Byte Buddy.
This Presentation is targeting for deep knowledge of android OS that cover below topics:
History
Architecture
Dalvik Virtual Machine(DVM)
Process Management
Memory Management
Application and Service Lifecycle
These are the slides to a talk I gave at Pittsburgh techFest 2012. The topic was an overview of the Node.js framework, and how you can use it to build amazing things.
* See more of my work at http://www.codehenge.net
This presentation on Android OS contains basic and core concepts of Android Operation System, like Android Architecture, Dalvik Virtual Machine, Process Management, Memory Management, Application and Service life cycle, etc...
Has the traditional intro to event looped servers (thanks Ryan!) with a couple of examples of why I think node.js is particularly exciting today. Code for the demos can be found at https://github.com/davidpadbury/node-intro.
Understanding Framework Architecture using Eclipseanshunjain
Talk on Framework architectures given at SAP Labs India for Eclipse Day India 2011 - Code attached Here: https://sites.google.com/site/anshunjain/eclipse-presentations
Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...Dr. Vinod Kumar Kanvaria
Exploiting Artificial Intelligence for Empowering Researchers and Faculty,
International FDP on Fundamentals of Research in Social Sciences
at Integral University, Lucknow, 06.06.2024
By Dr. Vinod Kumar Kanvaria
How to Add Chatter in the odoo 17 ERP ModuleCeline George
In Odoo, the chatter is like a chat tool that helps you work together on records. You can leave notes and track things, making it easier to talk with your team and partners. Inside chatter, all communication history, activity, and changes will be displayed.
How to Build a Module in Odoo 17 Using the Scaffold MethodCeline George
Odoo provides an option for creating a module by using a single line command. By using this command the user can make a whole structure of a module. It is very easy for a beginner to make a module. There is no need to make each file manually. This slide will show how to create a module using the scaffold method.
MATATAG CURRICULUM: ASSESSING THE READINESS OF ELEM. PUBLIC SCHOOL TEACHERS I...NelTorrente
In this research, it concludes that while the readiness of teachers in Caloocan City to implement the MATATAG Curriculum is generally positive, targeted efforts in professional development, resource distribution, support networks, and comprehensive preparation can address the existing gaps and ensure successful curriculum implementation.
Strategies for Effective Upskilling is a presentation by Chinwendu Peace in a Your Skill Boost Masterclass organisation by the Excellence Foundation for South Sudan on 08th and 09th June 2024 from 1 PM to 3 PM on each day.
This presentation was provided by Steph Pollock of The American Psychological Association’s Journals Program, and Damita Snow, of The American Society of Civil Engineers (ASCE), for the initial session of NISO's 2024 Training Series "DEIA in the Scholarly Landscape." Session One: 'Setting Expectations: a DEIA Primer,' was held June 6, 2024.
A Strategic Approach: GenAI in EducationPeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
A review of the growth of the Israel Genealogy Research Association Database Collection for the last 12 months. Our collection is now passed the 3 million mark and still growing. See which archives have contributed the most. See the different types of records we have, and which years have had records added. You can also see what we have for the future.
বাংলাদেশের অর্থনৈতিক সমীক্ষা ২০২৪ [Bangladesh Economic Review 2024 Bangla.pdf] কম্পিউটার , ট্যাব ও স্মার্ট ফোন ভার্সন সহ সম্পূর্ণ বাংলা ই-বুক বা pdf বই " সুচিপত্র ...বুকমার্ক মেনু 🔖 ও হাইপার লিংক মেনু 📝👆 যুক্ত ..
আমাদের সবার জন্য খুব খুব গুরুত্বপূর্ণ একটি বই ..বিসিএস, ব্যাংক, ইউনিভার্সিটি ভর্তি ও যে কোন প্রতিযোগিতা মূলক পরীক্ষার জন্য এর খুব ইম্পরট্যান্ট একটি বিষয় ...তাছাড়া বাংলাদেশের সাম্প্রতিক যে কোন ডাটা বা তথ্য এই বইতে পাবেন ...
তাই একজন নাগরিক হিসাবে এই তথ্য গুলো আপনার জানা প্রয়োজন ...।
বিসিএস ও ব্যাংক এর লিখিত পরীক্ষা ...+এছাড়া মাধ্যমিক ও উচ্চমাধ্যমিকের স্টুডেন্টদের জন্য অনেক কাজে আসবে ...
A workshop hosted by the South African Journal of Science aimed at postgraduate students and early career researchers with little or no experience in writing and publishing journal articles.
2. Introduction
Your host: Dan Morrill, Developer Advocate
Android is a complete OS, not just a framework
Even the friendliest abstraction still has “seams”
Let’s demystify Android’s seams
3. Managed Component Lifecycles
An Android APK is a collection of components
Components share a set of resources
Databases, preferences, file space, etc.
Also: a Linux process.
Every Android component has a managed lifecycle
4. Basics of an Android Application
Activities
Tasks
Processes
5. Activities and Tasks
An Activity is a “molecule”: a discrete chunk of functionality
A task is a collection of Activities
A “process” is a standard Linux process
6. Activities and Tasks
Activity Activity Activity
Activity
ContentProvider
ContentProvider
Process
Service Service
Process Process
APK Package APK Package
7. Activities and Tasks
Activity Activity Activity Activity
Task ContentProvider
ContentProvider
Process
Service Service
Process Process
APK Package APK Package
8. Activities Are...
...a concrete class in the API
...an encapsulation of a particular operation
...run in the process of the .APK which installed them
...optionally associated with a window (UI)
...an execution Context
9. Tasks Are...
...more of a notion than a concrete API entity
...a collection of related Activities
...capable of spanning multiple processes
...associated with their own UI history stack
...what users on other platforms know as “applications”
10. Process Basics
Android process == Linux process
By default, 1 process per APK
By default, 1 thread per process
All* components interleave events into the main thread
*
Most
11. Process Lifecycle
A process is started for a given user ID when needed
Binding to a Service
Binding to a ContentProvider
Starting an Activity
Firing an IntentReceiver
Remains running until killed by the system
13. The Directed Cyclic Graph of Life
Activities have several states
Lifecycle methods are called on
transitions
You typically don’t need to use
them all, but they are there
http://code.google.
com/android/reference/android/app/
Activity.html
14. Activity Lifecycle
Three general “phases”
Starting up
onCreate(): first method called during lifetime, with prior state
onStart()/onRestart(): signal that execution is beginning
onResume(): signals that a previous pause is being undone
15. Activity Lifecycle
Normal execution
onFreeze(): save UI state (NOT intended to save persistent data)
onPause: signals loss of focus and possible impending shutdown
16. Activity Lifecycle
Shutting down
onStop()/onDestroy(): final shutdown and process termination
Not guaranteed to be called (and usually not, except on finish()...)
17. Activity Lifecycle Examples
Starting a Child Activity
Child Activity + Process Shutdown
Returning to the Home Screen
Calling finish() Explicitly
Displaying a Dialog Box
Semi-Transparent Windows
Device Sleep
18. Example: Child Activity Launched
Call sequence:
onCreate()
onStart()
onResume()
onFreeze() This is the “classic”
onPause()
scenario.
onStop()
onRestart()
onStart(), onResume(), ...
19. Example: Child Activity + Process
Death
Call sequence:
onCreate() (empty state)
onStart()
onResume() Like the basic case, but
onCreate() is called again,
onFreeze()
with the state saved in
onPause() onFreeze().
onStop() (maybe)
onDestroy() (maybe)
onCreate() (with state), ...
20. Example: User Hits ’Home’
Call sequence:
onCreate()
onStart()
onResume() Identical to the basic case
onFreeze() -- that is, the Home key is
onPause()
not a special case.
onStop() (maybe)
onDestroy() (maybe)
21. Example: finish() Called
Call sequence:
onCreate()
onStart() Because the Activity has
onResume() been explicitly told to quit
and is being removed from
onPause()
the task (and history stack),
onStop() onFreeze() is not called,
onDestroy() and onDestroy() is
reached.
22. Example: Dialog Box
Call sequence:
onCreate()
onStart()
Despite appearances,
onResume() dialog boxes are Views,
and not Activities, so they
have no effect on the
owning Activity’s lifecycle.
23. Example: Transparent/Non-fullscreen Child
Call sequence:
onCreate()
onStart()
The new partial-screen
window leaves a portion of
onResume() the previous window visible,
onFreeze() so onPause() is followed by
onPause()
onResume() (without
onStop()) when the child
onResume() closes.
24. Example: Device Goes to Sleep
Call sequence:
onCreate()
onStart()
onResume() The device going to sleep is
identical to a non-fullscreen
onFreeze()
Activity being launched on
onPause() top.
onResume()
26. Threading Overview
Each process has one thread (by default)
Most components share the single thread
Services and ContentProviders sometimes do not
27. Threads and Loopers
Each thread has a Looper to handle a message queue
Events from all components are interleaved into Looper
e.g. View UI events, IntentReceivers firing, etc.
Loopers cannot accommodate multi-threaded access
They are designed to play nicely with MessageHandlers
28. Threads and Loopers
APK Package
Process
Thread Local
Intent
Looper Service
Receive
Call
r
UI
Activity Events
Thread
External
Message Service
Activity Queue System Calls
Events
29. Threads and Views
Views use Looper messages to fire events
Since Loopers are 1:1 with threads, the View tree is too
Threads you create cannot directly touch a View
But, you can create a new Looper for your own thread
30. Threads in Other Contexts
Services & ContentProviders sometimes run in their own threads
...but still in the same process
Components can create threads, but must handle thread-safety
31. Service Lifecycle
Started by some other Component
Either explicitly, or implicitly by binding to it
Explicitly-started Services run until explicitly shut down
(or killed by the system during a memory crunch)
Implicitly-started Services run til the last client unbinds
32. More on Processes
Resource Management
Processes & Security
Controlling Processes
33. Process Resource Management
Spawned by the special “Zygote” process
Process + pre-warmed Dalvik VM == responsiveness
Process runs under user ID unique to system
Process + User ID == security
34. Processes & Security
Each application is given a unique user ID
No exceptions!
...except these: init, Zygote, and the main runtime
Each application has direct access only to its own data
Other apps’ resources are available only via defined,
explicitly-exposed APIs
i.e. Issuing Intents, binding to Services or ContentProviders
36. Why??
All this process/Activity/task stuff is confusing... why?
It’s all for the noble goal of efficiency (i.e. speed.)
Serialization is slooow; memory transfers are slooow.
CPU is not the bottleneck: think memory & bandwidth.
37. Process Transparency
Process management is transparent to code.
...almost. In some cases, it’s unavoidably visible.
Lifecycle is seamless, but data sometimes isn’t.
Specific APIs send data across process boundaries.
38. IPC Overview
Kernel Process
Binder
Parcel
Parcelable
Bundle Custom
Objects
Intent Activity Service
Receive
r
39. Binder in 30 Seconds
All IPC goes through “The Binder”
Binder is implemented as a kernel module + system lib
Supports sophisticated cross-process data transport
The framework APIs “know” how to use Binder
Generally two entry points: Bundles & Parcelables
40. IPC - Parcelables
A Parcelable is a class which can marshal its state to something
Binder can handle -- namely, a “Parcel”
Standard Java serialization has semantics Parcelables don’t need
Supporting full serialization would mean wasting CPU cycles
41. IPC - Bundles
Bundles are typesafe containers of primitives
That is, C-like primitives: ints, strings, etc.
Simple data-passing APIs use Bundles
Think of onFreeze() as passing data to your future self
Flat structure permits optimizations like memory-mapping
42. IPC - AIDL
“Android Interface Definition Language”
Used to build developer-friendly APIs using Parcelables
Preferred way to expose structured, complex-typed APIs
Compromise between efficiency and Java usability
43. Wrapping Up
APKs are loose collections of components
Tasks (AKA apps) are bags of component
instances that span processes & APKs
Managed lifecycles & IPC join the “seams”