Posted on

ContextWrapper ContextImpl getBaseContext

ActivityThread casts Application.getBaseContext() to ContextImpl

[code language=”java”]
static ContextImpl getImpl(Context context) {
Context nextContext;
while ((context instanceof ContextWrapper) &&
(nextContext=((ContextWrapper)context).getBaseContext()) != null) {
context = nextContext;
}
return (ContextImpl)context;
}
[/code]

Potential crash when !(context instanceof Activity)

[code language=”java”]
public static Activity unwrap(Context context) {
while (!(context instanceof Activity)) {
ContextWrapper wrapper = (ContextWrapper) context;
context = wrapper.getBaseContext();
}
return context;
}
[/code]

Posted on

Start and kill process in Delphi

[code language=”pascal”]
var
PrIn: TProcessInformation;
StIn: TStartupInfo;
Res: bool;
ProcID, Process: Cardinal;

// start
begin
GetStartupInfo(StIn);
Res := CreateProcess(PChar(‘..\Project1.exe’),
PChar(‘"command line params"’), nil, nil, False, CREATE_NEW_PROCESS_GROUP,
nil, nil, StIn, PrIn);
ProcID := PrIn.hProcess;
Process := PrIn.dwProcessId;
end;

// kill
begin
TerminateProcess(ProcId, 0);
end;
[/code]