Android Tutorial [B4X] B4A, B4i, B4J and B4r API documentation - B4X Object Browser

Status
Not open for further replies.

Vader

Well-Known Member
Licensed User
Does Object Browser hold the xml files open after reading them? If have it open while I try to regenerate a library jar and its xml I get a "process cannot access the file because it is being used by another process" error and have to close Object Browser and reopen it after generating the xml file. This is a bit inconvenient while I am trying to tidy up the comments in a library. Ideally I would like to be able to keep it open and just refresh it like I do in the IDE Libs tab.

EDIT:- Sorry, forget this. For some reason it's working OK today. I'm baffled why it didn't yesterday :confused:

EDIT AGAIN :- The problem has just come back :( After being able to edit and regenerate the jar and xml with Object Browser open and then just refresh it it has now given the error and I had to close Object Browser to allow the compiler to regenerate the xml. Very strange!
I didn't think I was keeping it open as I load all the nodes into memory at the beginning or upon demand (if that is the option selected), so there is no reason to keep it open. I was going to leave it to the weekend, but I'll take a look now.
 

Vader

Well-Known Member
Licensed User
Updated. Let me know if that fixes it.
(I set a couple of objects to null after they were closed. Neither implements IDisposable)
 

Yafuhenk

Active Member
Licensed User
This version works great. Wonderful tool. As already said by some one it can be used for the B4J libraries as well.
Would it be possible to have a extra menu item where you can choose between B4A or B4J. This to to avoid deleting and loading the other libraries every time you want to switch.

Thanks
 

Vader

Well-Known Member
Licensed User
This version works great. Wonderful tool. As already said by some one it can be used for the B4J libraries as well.
Would it be possible to have a extra menu item where you can choose between B4A or B4J. This to to avoid deleting and loading the other libraries every time you want to switch.

Thanks
You will have to explain further, as I don't use B4J and don't understand your use-case.
 

agraham

Expert
Licensed User
Updated. Let me know if that fixes it.
Unfoturtunately not, but it looks like it may be a Windows/.NET problem. I couldn't see any pattern while using it with the Eclipse so I looked at Object Browser with Process Explorer.

http://technet.microsoft.com/en-us/sysinternals/bb896653

You can see which files Windows thinks a process has open in the lower window, or in this case it is easier to use Find -> Handle or DLL and search for something reasonably unique to the xml files path like "Libraries" or ".xml". I then find that after loading and after each refresh Windows thinks that Object Browser still has some files open. However the number of files, and the particular files still open, varies apparently randomly between refreshes.
 

Vader

Well-Known Member
Licensed User
Unfoturtunately not, but it looks like it may be a Windows/.NET problem. I couldn't see any pattern while using it with the Eclipse so I looked at Object Browser with Process Explorer.

http://technet.microsoft.com/en-us/sysinternals/bb896653

You can see which files Windows thinks a process has open in the lower window, or in this case it is easier to use Find -> Handle or DLL and search for something reasonably unique to the xml files path like "Libraries" or ".xml". I then find that after loading and after each refresh Windows thinks that Object Browser still has some files open. However the number of files, and the particular files still open, varies apparently randomly between refreshes.
I will look into it further. I looked into it last night whilst sitting on the couch, so maybe if I add some logging it may help show what's happening.
 

Vader

Well-Known Member
Licensed User
Ok, so spent about half an hour playing with Process Monitor excluding every other process and IO type until I saw only the Browser.exe entries. I can confirm there is nothing happening to the XML files after they are loaded.

This is as I thought as I am using LINQ to do the hard work, and as I said before, the objects would have been garbage collected pretty soon afterwards.
Basically, open - read - close - dispose [rinse and repeat]
 

dilettante

Active Member
Licensed User
A downside is that in Windows Vista and beyond .Net Frameworks get preinstalled as proteced system resources. This means once they break (and they do) there is no way to repair them unless you (a.) reinstall Windows from scratch, or (b.) possibly via a "repair install" but that requires Windows setup media with all Service packs slipstreamed, not an easy thing to do anymore.

See How to repair the .NET Framework 2.0 and 3.0 on Windows Vista which only addresses some trivial cases and leaves most users with an "oh well, reinstall Windows."

So for many people this will be useless. Typically the systems I've seen have Frameworks 3.0 and above irreparably broken, and two of these are my own systems (one Vista and One Win7). I've only been lucky that Basic4Android and B4J work here at all (maybe these target 2.0?).
 

agraham

Expert
Licensed User
I didn't see your posts as the forum doesn't seem to send me all the emails it should. I get some, but not all, notifications from the threads I am subscribed to.
Do you have the option to load on demand turned on? If so, turn that off.
No, its always off. I'll just have to live with it.
 

jamesnz

Active Member
Licensed User
Been playing with B4A for a week, just found this, excellent work, the visual structure makes it easy to understand the libraries.
Really well done ! :)
 

G4HFQ

New Member
Licensed User
New to B4A and just found your Object Browser. It will help enormously in getting to grips with things.

My eyesight is getting worse and today's HD screens are not helping much - is there any way of choosing a font style and size?

Thanks
 

Vader

Well-Known Member
Licensed User
No, sorry, I didn't add that feature. It would be a bit of work, but definitely possible. Easy if was just the library info I guess.
 

G4HFQ

New Member
Licensed User
Thank you for your quick response. It is just the library information I am interested in, not the menu system nor any part of the framework of the program.

Thanks
 

warwound

Expert
Licensed User
@G4HFQ

An alternative would be to use my xml2bb script.
You'd upload the library .xml file to my script, choose HTML output and then copy/paste the HTML output into a text document with an .html file extension.
Now you can use a browser to view the library methods, comments etc.
The attached file shows the output of my script when i uploaded the GoogleMaps.xml file.

My script currently has a bug where it doesn't correctly parse Event data.
I created a fix last weekend and hope to have the fix uploaded within a few days.
If you look in the attached file at the MapFragment MarkerClick Event you'll see the bug - the Event's return value is missing.

Martin.
 

Attachments

Vader

Well-Known Member
Licensed User
All those people that are getting errors, please ensure you have .NET Framework 3.5 SP1 installed. It must be SP1.
 
Status
Not open for further replies.
Top